I have used charindex and patindex but I'm wondering if anyone has a good way to deal with the problem I'm trying to figure out.
If you look at the following data:
The values returned are:Code:CREATE TABLE #MYTEMPTABLE (COL1 INT PRIMARY KEY, COL2 VARCHAR(30)) INSERT INTO #MYTEMPTABLE (COL1, COL2) VALUES (1, 'YES PCA') INSERT INTO #MYTEMPTABLE (COL1, COL2) VALUES (2, ' YES PCA') INSERT INTO #MYTEMPTABLE (COL1, COL2) VALUES (3, 'NO PCA') INSERT INTO #MYTEMPTABLE (COL1, COL2) VALUES (4, ' NO PCA') INSERT INTO #MYTEMPTABLE (COL1, COL2) VALUES (5, 'PCA YES') INSERT INTO #MYTEMPTABLE (COL1, COL2) VALUES (6, 'PCA NO') INSERT INTO #MYTEMPTABLE (COL1, COL2) VALUES (7, ' YES ') INSERT INTO #MYTEMPTABLE (COL1, COL2) VALUES (8, ' NO') INSERT INTO #MYTEMPTABLE (COL1, COL2) VALUES (9, ' Was PCA APPROVED') SELECT * FROM #MYTEMPTABLE
The values for ID's (Col1) 1 and 3 are the "correct" patterns I'm looking for.Code:1 YES PCA 2 YES PCA 3 NO PCA 4 NO PCA 5 PCA YES 6 PCA NO 7 YES 8 NO 9 Was PCA APPROVED
Given this example, if I want to search for anything where Col2 is not in
('YES PCA', 'NO PCA'), I could write a query stating:
SELECT *
FROM #MYTEMPTABLE
WHERE (LEFT(COL2,7)<>'YES PCA' OR
LEFT(COL2,6)<>'NO PCA')
but the problem is that it just returns all 9 rows when I would only want to see those rows that "weren't correct"
I'm looking to say something like:
Select case when (LEFT(COL2,7)<>'YES PCA' OR
LEFT(COL2,6)<>'NO PCA') then 1 else 0 end as 'NEEDS TO BE FIXED'
FROM #MYTEMPTABLE
Hopefully this is making sense...the columns where "PCA" doesn't show up at all or if "NO" or "YES" don't show up in COL2 kind of baffle me.
Thanks!
Craig
EDIT: The results returned look trimmed in my POST...obviously records 2,4,7,8 and 9 have leading spaces in the result set![]()



LinkBack URL
About LinkBacks
Reply With Quote

Bookmarks