我需要匹配部分字符串,但无法打开全文索引,因此无法使用包含。我查看了 Levenstein 确定两个字符串之间距离的函数,但我不是在寻找模糊匹配,而是列中的每个字符都存在于字符串中。
即,如果传递的字符串类似于 AB_SYS_20120430.TXT,我想匹配任何包含 AB_SYS 的列。like 谓词没有让我到达那里。我真的需要 .NET 包含功能的等效功能,但如前所述,打开全文索引不是打开的选项。我想我会看看是否还有其他可能的解决方法。
我需要匹配部分字符串,但无法打开全文索引,因此无法使用包含。我查看了 Levenstein 确定两个字符串之间距离的函数,但我不是在寻找模糊匹配,而是列中的每个字符都存在于字符串中。
即,如果传递的字符串类似于 AB_SYS_20120430.TXT,我想匹配任何包含 AB_SYS 的列。like 谓词没有让我到达那里。我真的需要 .NET 包含功能的等效功能,但如前所述,打开全文索引不是打开的选项。我想我会看看是否还有其他可能的解决方法。
您在寻找LIKE
功能吗?
http://www.w3schools.com/sql/sql_like.asp
... WHERE MyColumn LIKE '%AB_SYS%'
这可能不是最佳的,但它似乎回答了您的问题......如果您只能从左侧或右侧进行搜索,则可以进一步优化。
这在功能上类似于String.Contains
http://msdn.microsoft.com/en-us/library/dy85x1sa.aspx
编辑:您将如何将输入文本解析为“相关”子字符串?
编辑:要搜索相同的LIKE
条件但反向,从您的部分列到完整的文字,只需附加通配符:
... WHERE 'AB_SYS_20120430.TXT' LIKE '%' + MyColumn + '%'
编辑:你建议你不能让它工作。如果您添加架构做您的问题,那么我可以进一步帮助您,但请考虑这一点:
您有一个名为 MyTable 的表
在该表中有一个名为 MyColumn 的
列 该表中的某些行在 MyColumn 中有数据“AB_SYS”
给定参数“AB_SYS_20120430.TXT”,您希望返回所有匹配的行
CREATE PROCEDURE MyTestProcedure
@pFullNameString nvarchar(4000) = '' -- parameter passed in, like AB_SYS_20120430.TXT
AS
BEGIN
SELECT
*
FROM
MyTable
WHERE
@pFullNameString LIKE '%' + MyTable.[MyColumn] + '%'
END
GO
You could use CHARINDEX
WHERE CHARINDEX(StringToCheckFor, StringToCheckIn) > 0