如何查詢我是否想要檢查字符串是否包含任何順序的數字(字符),如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