ms sql 正则表达式

检查插入的记录如插入0123456789,1234567890 插入的记录如前面有零则过滤掉
如插入0123456789记录 用sql 触发器实现 修改为123456789
ALTER trigger [dbo].[card] on [dbo].[BADGE_C] for insert as
declare @getid nvarchar(32)
declare @newid nvarchar(32)
set @getid=(select CARDNO from inserted)
set @newid= 实现过滤掉前导零的值 ('[1-9]*[0-9]')我不会写了
update dbo.badge_c set cardno=@newid where id=@getid
最新回答
鱼沉秋水

2022-02-11 01:40:43

下面这个是一个自定义函数,用户可以调用这个函数判断指定的字符串是否符合正则表达式的规则.
CREATE FUNCTION dbo.find_regular_expression
(
@source varchar(5000), --需要匹配的源字符串
@regexp varchar(1000), --正则表达式
@ignorecase bit = 0 --是否区分大小写,默认为false
)
RETURNS bit --返回结果0-false,1-true
AS
BEGIN

--0(成功)或非零数字(失败),是由 OLE 自动化对象返回的 HRESULT 的整数值。
DECLARE @hr integer

--用于保存返回的对象令牌,以便之后对该对象进行操作
DECLARE @objRegExp integer DECLARE @objMatches integer

--保存结果
DECLARE @results bit

/*
创建 OLE 对象实例,只有 sysadmin 固定服务器角色的成员才能执行 sp_OACreate,并确定机器中有VBScript.RegExp类库
*/
EXEC @hr = sp_OACreate 'VBScript.RegExp', @objRegExp OUTPUT
IF @hr <> 0 BEGIN
SET @results = 0
RETURN @results
END
/*