如何查询是否要检查字符串是否包含任何顺序的1,2,3,4,5,6,7之类的数字(字符)。可以通过在AND
子句中为{1,2}编写LIKE
语句来实现,如下所示,等等,
Where days like '%1%' and days like '%2%' ...... So on
是否有任何查询检查字符串中存在的特定字符。或者以上示例如何通过简写查询实现。请帮忙。感谢。
答案 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
快得多