5

请帮我写一个 PATINDEX 或 LIKE 语句来匹配以下字符:

  • AZ、0-9、连字符 (-)、句点 (.)、下划线 (_) 和波浪号 (~)

我计划在带有 nvarchar(200) 输入的标量 UDF 中使用它,它通过以下方式处理输入:

  1. 用连字符 (-) 替换不匹配的字符
  2. 将出现的两次连字符 (--) 替换为单个 (-)
  3. 删除前导和尾随连字符 (-)
  4. 返回处理后的输入

这将用于创建对 SEO 友好的 URL 的一部分,例如/my-seo-friendly-url-1. 除了模式匹配部分,我对做这个 UDF 很有信心。类似正则表达式的东西让我感到困惑!请帮忙。

提前感谢您的帮助。

4

1 回答 1

5

可能最好在您的应用程序中完成,但是

SELECT PATINDEX('%[^-a-zA-Z0-9.~_]%', @YourString COLLATE Latin1_General_BIN)

应该在 TSQL 中做

于 2012-05-20T16:22:27.737 回答