查找非字母字符串中的字符串

时间:2016-05-31 07:54:41

标签: sql-server string tsql

我必须在表格中找到所有出现的字母字符串。为此,我使用下面的算法(我在循环中迭代另一个表来获取此@TableName值):

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

这种情况是错误的,因为它还会显示另一个字符串中包含的字符串。

我们假设 @TableName = test。我想在表中找到包含此字符串的记录(也由非字母字符表示)。我的算法返回包含的行:

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

我不需要最后两个,因为这些是不同的词。如何修改我的条件以排除不需要的结果?

1 个答案:

答案 0 :(得分: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]%')