November 17, 2004 at 1:31 pm
I am updating a table from text document - I need to limit the data to only those records that met a certain format criteria. (####-###)
My field for ProjectNum currently contains mixed data -
example:
| 2787 |
| 116202 |
| 119002 |
| 140302 |
| 154402 |
| 155902 |
| 157602 |
| 4714001 |
| 5157001 |
| 5739001 |
| 6249001 |
| 6335001 |
| 00000-000 |
| 00000-001 |
| 00001-001 |
| 00001-002 |
| 00001-005 |
| 00001-011 |
| 00002-001 |
| 00002-002 |
| CADFileList |
| CADFileList |
| CINCINNAT |
| filelist |
| filelist |
| NULL |
| nzweob |
| Shortcut (2) to Forecast |
| Shortcut to Forecast |
| SLCT1F |
| STARBUCKS |
| TEST |
TESTX |
The only data I want in my table is the correct ProjectNum = 00002-002.
How do I insure that my data meets this criteria (####-###)
Here is my current query - feel free to make changes accordingly.
Karen
SELECT Q1.ProjectNum,
CURRENT_TIMESTAMP AS DateCreated,
'Import' AS UserCreated,
Q1.DateModified,
'Import' AS UserModified
FROM
(
SELECT Cast(Col004 as varchar(9)) AS ProjectNum, Cast(Col008 as datetime) AS DateModified
FROM CADFileList
WHERE (Col004 IS NOT NULL) OR
(Col004 LIKE '[0-9][0-9][0-9][0-9][0-9][-][0-9][0-9][0-9]%)') or Len(Col004)=9
) Q1
LEFT OUTER JOIN ProjectDemand ON Q1.ProjectNum = ProjectDemand.ProjectNumber
WHERE (ProjectDemand.ProjectNumber IS NULL) OR
(ProjectNum LIKE N'[0-9][0-9][0-9][0-9][0-9][-][0-9][0-9][0-9]%)' or Len(ProjectNum)=9)
November 17, 2004 at 4:15 pm
If the Project Number will "always" contain this format, then you should be able to use the following within your nested SELECT (Q1)
WHERE SUBSTRING( Col004, 5, 1) = '-'
AND ISNUMERIC( SUBSTRING( Col004, 1, 4)
AND ISNUMERIC( SUBSTRING( Col004, 6, 3)
You can determine how many constraints you need, like ISNUMERIC.
I wasn't born stupid - I had to study.
November 18, 2004 at 4:52 pm
I still get an error of Function not found when I parse the follwing query.
SELECT DISTINCT Q1.FilePath, Q1.ProjectNum, Q1.Filetype, Q1.DateModified
FROM (SELECT Col002 AS FilePath, Col004 AS ProjectNum, Col006 AS Filetype, Col008 AS DateModified
FROM CADFileList
WHERE (SUBSTRING(Col004, 5, 1) = '-') AND (ISNUMERIC(SUBSTRING(Col004, 1, 4)) AND (ISNUMERIC(SUBSTRING(Col004, 6, 3)))
Q1 LEFT OUTER JOIN
ImportFileLog ON Q1.ProjectNum + '.txt' = ImportFileLog.FileName
WHERE (ImportFileLog.FileName IS NULL) OR
(Q1.DateModified > ImportFileLog.DateImported)
November 19, 2004 at 4:10 am
To me it looks that when you have a column named ProjectNum and store there a wild mixture of strings, numbers, and combinations, you might need to revise your data model. I suspect you will be in trouble sooner or later with this structure anyway.
![]()
--
Frank Kalis
Microsoft SQL Server MVP
Webmaster: http://www.insidesql.org/blogs
My blog: http://www.insidesql.org/blogs/frankkalis/[/url]
Viewing 4 posts - 1 through 4 (of 4 total)
You must be logged in to reply to this topic. Login to reply