我使用字母排序功能,需要一个SQL语句来返回以可变长度字符串开头的记录。但是,如果字符串中的任何字符之间存在句点,空格或短划线,则还需要返回记录。
例如,传入的值可能是“M”(简单)。或“MA”(在这种情况下,它需要返回以“MA”,“M.A”,“M A”和“M-A”开头的记录)。或“MAA”,等等。
这是我到目前为止的陈述:
"SELECT * from table where LEFT(name," + value.Length + ")='" + value + "'"
但我无法弄清楚如何在name
中有句号,空格或短划线的情况下返回结果。任何构建声明的帮助都会很棒。
答案 0 :(得分:1)
看起来像正则表达式的工作。您可以通过返回一些匹配的记录并在ASP.NET中使用Regex来实现。 LINQ ...或更高效,您可以将它应用于您的SQL语句。
答案 1 :(得分:1)
如果您使用MS SQL Server,则可以使用替换功能,如果您有一组合理有限的“特殊”字符。你会破坏索引的使用,但无论如何你都可能会这样做。例如:
SELECT
name,
i_will,
never_use,
select_star
FROM
My_Table MT
WHERE
REPLACE(REPLACE(REPLACE(name, '.', ''), ' ', ''), '-', '') LIKE @prefix + '%'
正如您所看到的,当您添加“_”,“(”,“)”等时,声明会很快变得笨拙......