2012-02-29 66 views
0

我想找到字符串NULLNULL包圍任何字符,除非下一個字母是OA(即NULLONULLA都可以)。我想出了下面這麼遠,但它並不完全做我想做的:如何在字符串中找到字符串'NULL'?

DECLARE @VAR VARCHAR(255) 
SET @VAR = 'NULL' 
SELECT @VAR WHERE @VAR LIKE '%NULL[^OA]' 
+0

請顯示您所需的輸入和輸出? – Vikram 2012-02-29 10:06:08

回答

4

我會去:

REPLACE(REPLACE(@VAR,'NULLA',''),'NULLO','') LIKE '%NULL%' 
+0

不錯+1 *(還有6個去...)* – 2012-02-29 10:13:01

+0

但是如果你有NULLOXXX,它會返回XXX。這是預期的嗎? – Diego 2012-02-29 10:22:34

+0

@Diego:'LIKE'表達式不返回一個字符串,它是一個測試,因此它返回一個SQL布爾值(true,false或null)。在這裏''xxx''''''''''''將返回false,這是OP期望的IMO。 – Benoit 2012-02-29 10:26:23

1

喜歡的東西:

DECLARE @VAR VARCHAR(255) 
SET @VAR = 'NULL' 
SELECT @VAR WHERE @VAR LIKE '%NULL%' 
AND @VAR NOT LIKE '%NULL0%' 
AND @VAR NOT LIKE '%NULLA%' 
+1

是的,但這會失敗,並且'HELLO NULL NULLA FOO'。 – Benoit 2012-02-29 10:07:16

0

您可以使用CHARINDEX

SELECT @VAR WHERE CHARINDEX(@VAR , 'NULL') > 0 

OR

SELECT @VAR WHERE CHARINDEX('NULL' , @VAR) > 0 
1

這似乎已經完成了招對我來說: SELECT * FROM nulls_table其中null_field不喜歡 'NULL [OA]%'

我使用這些值創建一個表:

ANULL 
ONULL 
NULLA 
NULLO 
ANULLA 
NULL 
NULLOXXX 

,並選擇返回

ANULL 
ONULL 
ANULLA 
NULL 

它消除法無,NULLO和NULLOXXX這似乎是OP想要的 (找到字符串NULL或NULL包圍任何字符,除非下一個字母是O或A)