我在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