sql - PATINDEX 检测字母和六个数字
问题描述
SQL 服务器 2012。
表一
Id name number
1 py/ut/455656/ip null
2 py/ut/jl/op null
3 py/utr//grt null
我想找回号码
Id name number
1 py/ut/455656/ip 455656
2 py/ut/jl/op null
3 py/utr//grt null
这里是sql脚本
update table a
set number=SUBSTRING(name,PATINDEX('py/u/[0-9]',name)+6,6)
我需要py/ut
在/
. 如果有数字,该脚本运行良好。对于第二行,它正在交付jl/op
这个数字总是得到六个algarisms。
解决方案
检查这个:
declare @Number nvarchar(20)='py/ut/455656/ip'
Declare @intAlpha int
SET @intAlpha = PATINDEX('%[^0-9]%', @Number )
BEGIN
WHILE @intAlpha > 0
BEGIN
SET @Number = STUFF(@Number , @intAlpha, 1, '' )
SET @intAlpha = PATINDEX('%[^0-9]%', @Number )
END
END
select @Number
推荐阅读
- ruby-on-rails - 当我尝试在 Rails 5 中添加占位符关联记录时,嵌套字段表单出现错误
- android - 在自己的应用程序中显示网站是否合法?
- angular - Angular 6 - run method in service every 10 seconds
- phpstorm - 如何解锁配色方案属性?
- swift - 使用 Swift 3 对 Snowboy API 的 RESTful API 调用
- node.js - Angular 5 - 文件上传不起作用
- c# - C# 中的 Mongo DB 实体绑定
- sql - Phantom Table being created in Teradata
- lazy-loading - IntesectionObserver API 在小屏幕上水平滚动时无法触发事件
- install4j - 将替换脚本用于语言代码时,不会设置安装程序变量 sys.languageId