Joe*_*Joe 1 sql t-sql sql-server
我在SQL Server数据库中有一个字段,基本上是两个连接在一起的字段.它有一个描述符和一个数字.我想用一个数字构建一个视图,以便我可以将它与其他表相关联.该数字实际上是在其他表上键入的nvarchar.所以从这样的数据我只想查询数字部分:
带有值的ProgramField:
tst_desc:1
tst_desc:124
tst_desc:1495
tst_desc:20483
Run Code Online (Sandbox Code Playgroud)
所以我想我的查询返回一个结果:
ProgramNumField
1
124
1495
20483
Run Code Online (Sandbox Code Playgroud)
随着时间的推移,该数字的长度可变,并且需要为nvarchar,因此我可以将其与数据库中的其他表相关联.
如果你的前缀总是tst_desc:那么你可以简单地剥离它replace:
select
replace(ProgramField, 'tst_desc:', '') as ProgramNum
from yourTable
Run Code Online (Sandbox Code Playgroud)
如果前缀可以不同但始终用冒号与值分隔,则可以使用以下内容:
select
right(ProgramField, len(ProgramField) - charindex(':', ProgramField)) as ProgramNum
from yourTable
Run Code Online (Sandbox Code Playgroud)
最简单的方法是使用STUFF
SELECT STUFF(ProgramField, 1, charindex(':', ProgramField), '')
FROM yourtable
Run Code Online (Sandbox Code Playgroud)
如果您的某些行中有多个冒号的脏数据或冒号丢失,您可以从右向左搜索第一个无数字字符,您可以使用此方法,这可以处理各种有趣的数据:
SELECT
STUFF(RIGHT('@'+ProgramField, PATINDEX('%[^0-9]%',REVERSE(ProgramField)+'@')),1,1,'')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
672 次 |
| 最近记录: |