如何查询我是否想要检查字符串是否包含任何顺序的数字(字符),如1,2,3,4,5,6,7。它可以通过写上LIKE
条款AND
报表数1,2..and等类似下面来实现,搜索字符串中的字符集
Where days like '%1%' and days like '%2%' ...... So on
有哪些检查存在的字符串特定字符的任何查询。或者上面的例子如何用简短的查询来实现。请帮忙。谢谢。
如何查询我是否想要检查字符串是否包含任何顺序的数字(字符),如1,2,3,4,5,6,7。它可以通过写上LIKE
条款AND
报表数1,2..and等类似下面来实现,搜索字符串中的字符集
Where days like '%1%' and days like '%2%' ...... So on
有哪些检查存在的字符串特定字符的任何查询。或者上面的例子如何用简短的查询来实现。请帮忙。谢谢。
不会CONTAINS()为你工作?
另请注意如何split word into char array。
如果天昏迷分离可以使用FIND_IN_SET
SELECT FIND_IN_SET(1, days) AND FIND_IN_SET(2, days);
这是不同的,而不是更好,但据我所知,没有其他的本地方法。 而LIKE可能会快得多然后find_in_set
我会建议看着[PATINDEX][1]
。从MSDN:如果模式没有发现,在所有 有效的文本和字符数据类型
返回的图案在 第一次出现指定的表达式,或零的起始位置。
你最终可能会使用类似WHERE PATINDEX(%[0-9]%', foo) > 0
当字符串中的任何字符与表达式匹配时,PATINDEX返回true。但我需要所有这些字符(1234567)出现在字符串中。 –
然后我误解了这个问题。不确定,如果不使用一堆AND语句:( – SchmitzIT
的一种方式做,这是创建一个表与所有你想搜索的字符串。
例如
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
您可以使用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是否在字符串中,然后写下你需要的任何代码。
我会使用isnumeric
来确保它们都是数字,然后测试0,8或9而不是1-7,因为它更短。
CONTAINS将会随机排列字符吗? –
@eraj它会,但事情是,你必须使用全文索引来使用这个谓词。 –
@eraj:如果您使用全文本,您需要从stoplist中删除这些字母,因为否则它将仅搜索字母而不是字母..并且全文搜索对于您的要求我不推荐。 – dotNETbeginner