我在SQL Server 2005中有一個數據表,包含西班牙語中的單詞。我已將每個單詞存儲在一行中。 鑑於一個字符數組,我想查找所有包含這些字符的單詞,沒有按照它們出現的順序排列。例如,「avi」與「avion」以及「iva」相匹配。可能嗎? 感謝您的關注。在Sql Server中以任意順序查找字符
0
A
回答
2
要做的最簡單的事情是拆分和透視,然後加入。
所以AVI變成一個字母表三行:
a
v
i
然後加入到單詞表與INNER JOIN ON CHARINDEX(letter, word) > 0
使用GROUP BY word
與HAVING COUNT(*) = (SELECT COUNT(*) FROM letters)
在這個例子中,我剛剛拿起並從這裏修改了一個cte Split a string into individual characters in Sql Server 2005以避免愚弄一個數字表(但我通常可能會使用數字表來做我的支點)。
DECLARE @t AS TABLE (search varchar(100));
INSERT INTO @t VALUES ('avi');
DECLARE @words AS TABLE (word varchar(100));
INSERT INTO @words VALUES ('avion'), ('iva'), ('name');
with cte as
(
select substring(search, 1, 1) as letter,
stuff(search, 1, 1, '') as search,
1 as RowID
from @t
union all
select substring(search, 1, 1) as letter,
stuff(search, 1, 1, '') as search,
RowID + 1 as RowID
from cte
where len(search) > 0
)
,letters AS (
SELECT DISTINCT letter FROM cte
)
SELECT words.word
FROM letters
INNER JOIN @words AS words
ON CHARINDEX(letter, word) > 0
GROUP BY words.word
HAVING COUNT(*) = (SELECT COUNT(*) FROM letters)
+0
你好: 今天晚上我會試試你的解決方案,謝謝你的幫助! – Oscar 2012-04-18 07:53:07
0
爲什麼不:
SELECT * FROM words WHERE word LIKE '%a%' AND word LIKE '%v%'AND word LIKE '%i%'
這會消耗 「了大量」 資源,所以你不應該使用它在> 100萬行(取決於您的服務器上)。
1
感謝大家的回答。最後,我通過在Sql Server中創建一個能夠評估正則表達式的程序集來解決此問題。 這裏是作爲基地使用的文章: http://www.codeproject.com/Articles/42764/Regular-Expressions-in-MS-SQL-Server-2005-2008
最好的問候。
相關問題
- 1. 在SQL Server中保存並獲取任意排序順序
- 2. 檢查字符串多個單詞(以任意順序)
- 3. SQL搜索以任意順序
- 4. 查找字符串中的任何字母SQL Server 2008 R2
- 5. 在SQL Server 2000中按字段以字母順序排序
- 6. Java Regex以任意順序查找單詞的組合
- 7. 在SQL Server中查找XML文檔中的節點順序
- 8. 在Python中以字符串的數字順序查找最長的字符串
- 9. 選擇以任意順序包含子集字符的行
- 10. 使用字符串以任意順序匹配數組元素
- 11. SQL「其中存在」查找順序
- 12. 以任何順序查找符號條目
- 13. 以任何順序在矩陣中查找模式?
- 14. SQL Server查詢找到字符串
- 15. 在Sql Server中查找連字符的查詢
- 16. 在SQL Server數據庫字段中查找大寫字符
- 17. 查詢SQL Server 2008表以在包含Unicode字符的列中查找值
- 18. 如何在SQL Server中查找任何varchar類型變量的字符大小
- 19. 如何以任意順序製作XSD
- 20. 查找字段順序
- 21. 查找在SQL Server
- 22. 如何在SQL Server中查找數字序列中的空白
- 23. 在XML列中使用sql server查找字符串
- 24. 以任意順序查詢多個詞PHP + MySQL
- 25. 改進SQL Server查詢以將任意表轉換爲JSON
- 26. SQL等,其中字符串可以以隨機的順序
- 27. 在字符串查找字符串包含SQL Server中的逗號
- 28. mysql以任意順序搜索多個關鍵字
- 29. 如何在字符串中查找字母以及如何按字母順序返回兩個字符串? java
- 30. 字符串中整數的SQL順序
你想匹配所有字符?應該返回「vi」還是「avxi」? – 2012-04-18 00:36:02
你好: 是的,我想要得到所有包含謂詞的單詞,不管它們出現的順序如何。 – Oscar 2012-04-18 07:52:18
這個單詞是否必須包含每個字符 ? – 2012-04-19 21:30:05