SQL Server 2008 r2-T-SQL LIKE或PATINDEX以匹配除AZ,0-9,连字符,句点,下划线和波浪号之外的其他字符

Chr*_*non 5 t-sql sql-server pattern-matching user-defined-functions sql-server-2008

请帮我写一个PATINDEX或LIKE语句来匹配字符其他比:

  • AZ,0-9,连字符(-),句点(。),下划线(_)和波浪号(〜)

我计划在具有nvarchar(200)输入的标量UDF中使用此函数,该输入可通过以下方式处理输入:

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

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

感谢您的帮助。

Mar*_*ith 5

在您的应用程序中可能做得最好,但是

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

应该在TSQL中做到