2

如何查询我是否要检查字符串是否包含任何顺序的数字(字符),如 1、2、3、4、5、6、7。可以通过在第 1,2 号的子句上编写AND语句来实现,如下所示,LIKE

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

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

4

6 回答 6

1

一种方法是创建一个包含您想要搜索的所有字符串的表。

例如

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
于 2012-12-06T17:25:57.467 回答
0

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

于 2012-12-07T15:08:52.750 回答
0

不会CONTAINS()为您工作吗?

还要注意如何将 word 拆分为 char array

于 2012-12-06T07:40:31.853 回答
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 是否在字符串中,然后编写您需要的任何代码来执行条件语句。

于 2012-12-07T14:59:11.623 回答
0

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

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

你可能最终会使用类似的东西WHERE PATINDEX(%[0-9]%', foo) > 0

于 2012-12-06T08:00:25.273 回答
-2

如果天是昏迷分开的,你可以使用FIND_IN_SET

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

它是不同的,不是更好,但据我所知,没有其他原生方式。LIKE 可能会比 find_in_set 快得多

于 2012-12-06T07:56:34.007 回答