2016-05-31 221 views
2

我必須在表格中找到所有字母字符串的出現。要做到這一點,我使用下面的算法(我遍歷另一個表中環得到這個@tablename值):在非字母字符串中查找字符串

UPPER(rows_value) like '%' + @TableName + '%') 

這種情況是錯誤的,因爲它也顯示我包含在另一個串串。

我們假設@TableName = test。我想查找表中的記錄,其中包含此字符串(也被非字母字符投降)。我的算法返回行包含:

test 
(test) 
test0x 
test02 
_test_2222 
pretest <--- 
uptest <---- 
... 

我不需要最後兩個,因爲這些是不同的單詞。如何修改我的條件以排除不需要的結果?

+2

您已經發布了你的算法的結果,但怎麼樣你預期的結果 – StackUser

+0

我不需要過去兩年(箭頭標記)的字符串。 – PNPTestovir

回答

2

嘗試下一個查詢:

DECLARE @TableName VARCHAR(128) = 'test' -- Replace with propper data type and max length 
SELECT * 
FROM (VALUES 
    ('test'), 
    ('(test)'), 
    ('test0x'), 
    ('test02'), 
    ('_test_2222'), 
    ('pretest '), 
    ('uptest'), 
    ('testAlpha'), 
    ('13223 tes3432') 
) t(Col1) 
WHERE t.Col1 LIKE '%' + @TableName + '%' 
AND  NOT(t.Col1 LIKE '%[a-z]' + @TableName + '%' OR t.Col1 LIKE '%' + @TableName + '[a-z]%') 
相關問題