【问题标题】:Using regular expression within a stored procedure在存储过程中使用正则表达式
【发布时间】:2011-09-15 23:15:04
【问题描述】:

什么是正则表达式模式,它支持除字符之外的每个输入?到目前为止,这就是我所拥有的 -

CREATE PROCEDURE Paging_Movies
@alphaChar char(1)
AS
if @alphaChar = '#'
select * from Movies where movies like '[0-9]%'
else
select * from Movies where movies like @alphaChar + '%'

【问题讨论】:

  • 你的意思是你只想要数字吗?或者所有不是a-z的字符?
  • 这是针对 sql server 2008 r2 的,是的,所有不是 a-z 的字符

标签: sql sql-server regex stored-procedures


【解决方案1】:

如果您想要真正的正则表达式模式匹配,您将需要滚动您自己的 CLR UDF。此链接介绍了如何执行此操作:

http://msdn.microsoft.com/en-us/magazine/cc163473.aspx

请记住,您只能在 SQL Server 2005 或更高版本中执行此操作。

如果您只想要非 alpha,您可以这样做:

'([^a-z])'

这是 SQL Server like 的文档:

http://msdn.microsoft.com/en-us/library/ms179859.aspx

【讨论】:

    【解决方案2】:

    SQL Server 2008 R2 内置了一些 regular expression functions

    这是一个解释how to extract them and use them in your own database的链接。

    【讨论】:

    • 很酷,不知道。所以你还在创建一个 CLR 函数,对吧?只是来自 Microsoft 程序集而不是您自己的程序集?
    • @Abe Miessler:我没有亲自使用过,但是是的 - 它只是让你不用自己动手,因为那里已经有一些了!
    猜你喜欢
    • 1970-01-01
    • 2014-06-06
    • 2021-12-22
    • 2012-10-07
    • 2016-01-22
    • 1970-01-01
    • 2011-02-20
    • 2020-09-14
    相关资源
    最近更新 更多