搜索字符串中的字符集

时间:2012-12-06 07:35:34

标签: sql sql-server sql-server-2008 tsql sql-server-2005

如何查询是否要检查字符串是否包含任何顺序的1,2,3,4,5,6,7之类的数字(字符)。可以通过在AND子句中为{1,2}编写LIKE语句来实现,如下所示,等等,

Where days like '%1%' and days like '%2%' ...... So on

是否有任何查询检查字符串中存在的特定字符。或者以上示例如何通过简写查询实现。请帮忙。感谢。

6 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是创建一个包含您要搜索的所有字符串的表。

e.g。

DECLARE  @searchstr TABLE (s VARCHAR(10))
INSERT INTO @searchstr VALUES ('1'),('2'),('3'),('4'),('5'),('6'),('7')

DECLARE  @tbl TABLE (days VARCHAR(100))
INSERT INTO @tbl VALUES ('1234567'),('123'),('1122334'),('7654321')  

SELECT   t.days 
FROM @tbl t
LEFT JOIN  @searchstr s 
        ON t.days LIKE '%' + s.s+ '%'
GROUP BY t.days HAVING COUNT(DISTINCT s.s) = 7

答案 1 :(得分:0)

CONTAINS()不会为你工作吗?

另请注意split word into char array的方式。

答案 2 :(得分:0)

我建议调查[PATINDEX][1]。来自MSDN:

  

返回第一次出现的模式的起始位置   指定的表达式,如果未找到模式,则为零   有效的文本和字符数据类型。

您最终可能会使用WHERE PATINDEX(%[0-9]%', foo) > 0

之类的内容

答案 3 :(得分:0)

您可以使用CHARINDEX

CHARINDEX(stringthatcontainschars1, '1', numofpositiontostartlookingat)
Output: 24, the position that your searched for char is at. returns zero if not found

如果您要查找列中的数字1或字符串,请输入:

CHARINDEX(columnname, '1', 1)
This would search for '1' beginning at position 1.

您可以根据条件语句是否返回0来判断char是否在字符串中,并在此之后编写您需要的任何代码。

答案 4 :(得分:0)

我使用isnumeric确保它们都是数字,然后测试0,8或9而不是1-7,因为它更短。

答案 5 :(得分:-2)

如果天数被逗星分开,您可以使用FIND_IN_SET

SELECT FIND_IN_SET(1, days) AND FIND_IN_SET(2, days);

这是不同的,而不是更好,但据我所知,没有其他本土方式。 LIKE可能会比find_in_set

快得多