SQL正则表达式

山城忙碌人 2011-02-28 06:40:39
RT。
我要修改一个字段(类型varchar)的值,我想把里面的非11位的数字,改为一个特定的值。
请问这个sql怎么写。。。
...全文
76 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
gw6328 2011-03-01
  • 打赏
  • 举报
回复
WHERE A NOT LIKE '%[0-9]%' OR LEN(A)<>11
山城忙碌人 2011-03-01
  • 打赏
  • 举报
回复
ssp2009:
汉字字段加字符加了共11 个怎么办?
Shawn 2011-03-01
  • 打赏
  • 举报
回复
--Declare Function
IF OBJECT_ID(N'dbo.RegexReplace') IS NOT NULL
DROP FUNCTION dbo.RegexReplace
GO
CREATE FUNCTION dbo.RegexReplace
(
@string VARCHAR(MAX), --被替换的字符串
@pattern VARCHAR(255), --替换模板
@replacestr VARCHAR(255), --替换后的字符串
@IgnoreCase INT = 0 --0区分大小写 1不区分大小写
)
RETURNS VARCHAR(8000)
AS
BEGIN
DECLARE @objRegex INT, @retstr VARCHAR(8000)
--创建对象
EXEC sp_OACreate 'VBScript.RegExp', @objRegex OUT
--设置属性
EXEC sp_OASetProperty @objRegex, 'Pattern', @pattern
EXEC sp_OASetProperty @objRegex, 'IgnoreCase', @IgnoreCase
EXEC sp_OASetProperty @objRegex, 'Global', 1
--执行
EXEC sp_OAMethod @objRegex, 'Replace', @retstr OUT, @string, @replacestr
--释放
EXECUTE sp_OADestroy @objRegex
RETURN @retstr
END
GO

--Reconfigure
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
EXEC sp_configure 'Ole Automation Procedures', 1
RECONFIGURE

--Test
DECLARE @str VARCHAR(100)
SET @str = 'a12345678911b'

SELECT result = dbo.RegexReplace(@str, '[0-9]{11}', '^', 1) --把11位数字替换成^
--RESULT
/*
result
a^b
*/
vivai2010 2011-02-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ssp2009 的回复:]
SQL code
where len(字段)<>11
[/Quote]
+
快溜 2011-02-28
  • 打赏
  • 举报
回复
where len(字段)<>11
guguda2008 2011-02-28
  • 打赏
  • 举报
回复
举个例子?

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧