我在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. 在MongoDB中以任意顺序搜索字符串
- 4. 查找使用正则表达式两个字符串以任意顺序
- 5. SQL搜索以任意顺序
- 6. 在Visual Studio的一行内以任意顺序查找单词*
- 7. SQL查找任意顺序的第一个非空值由
- 8. 查找字符串中的任何字母SQL Server 2008 R2
- 9. 检查任意长字符串中的号码顺序
- 10. 在SQL Server 2000中按字段以字母顺序排序
- 11. Java Regex以任意顺序查找单词的组合
- 12. 在SQL Server中查找XML文档中的节点顺序
- 13. 在Python中以字符串的数字顺序查找最长的字符串
- 14. 选择以任意顺序包含子集字符的行
- 15. 如何匹配连字符以任意顺序
- 16. 使用字符串以任意顺序匹配数组元素
- 17. SQL“其中存在”查找顺序
- 18. 以任何顺序查找符号条目
- 19. 按列包含字符串的SQL Server查询顺序
- 20. 以任何顺序在矩阵中查找模式?
- 21. SQL Server查询找到字符串
- 22. 在Sql Server中查找连字符的查询
- 23. 以任意顺序在字符串中的任意位置匹配多个模式
- 24. 在SQL Server数据库字段中查找大写字符
- 25. Oracle SQL:按字母顺序查找唯一组合和顺序
- 26. 查询SQL Server 2008表以在包含Unicode字符的列中查找值
- 27. 以任意顺序包含Django模板
- 28. 以任意顺序从字典/ OrdredDict中提取元素
- 29. 如何在SQL Server中查找任何varchar类型变量的字符大小
- 30. NSpredicate - 以任意顺序搜索单词
你想匹配所有字符?应该返回“vi”还是“avxi”? – 2012-04-18 00:36:02
你好: 是的,我想要得到所有包含谓词的单词,不管它们出现的顺序如何。 – Oscar 2012-04-18 07:52:18
这个单词是否必须包含每个字符 ? – 2012-04-19 21:30:05