我正在使用 SQL Server 2005。我需要从表中选择与给定参数具有相同字符串的所有行。
SELECT * FROM mytable WHERE title LIKE @param;
唯一的问题是标题列可能包含在比较的@param 中已被“-”替换的特殊字符。
@param 中除 [az][AZ][0-9][-] 之外的任何字符都被替换为“-”,因此无法逆转这一点。(该值来自一个 SEO 友好的 url)
可能的标题值的示例以及它们的外观:
"Adobe Acrobat" -> "Adobe-Acrobat"
"A+® Certification" -> "A-Certification"
我不能使用 SQL REPLACE() 函数,因为我需要字符的白名单机制。标题栏中可能有我无法预测的非常特殊的字符。
正则表达式将是完美的。
我现在搜索了 2 天,但找不到在 T-SQL 中实现它的简单有效的方法。
我可以获取所有行并在客户端代码中进行过滤,但这对我来说似乎不是一个很好的解决方案。
有什么建议么?