我的SQL Server数据库中有一个字段,基本上是两个连接在一起的字段。它有一个描述符和一个数字。我想用一个数字构建一个视图,以便我可以将它与其他表相关联。该数字实际上是在其他表上键入的nvarchar。所以从这样的数据我想查询数字部分:
带有值的ProgramField:
<input type="number" value="0" id="newInput">
<button id="showSum">Show Results</button>
<br>
<div id="result"></div>
所以我希望我的查询返回结果:
ProgramNumField
tst_desc:1
tst_desc:124
tst_desc:1495
tst_desc:20483
该数字的长度可变,随着时间的推移而增长,需要为nvarchar,因此我可以将其与数据库中的其他表相关联。
答案 0 :(得分:7)
如果您的前缀始终为tst_desc:
,那么您可以使用replace
将其删除:
select
replace(ProgramField, 'tst_desc:', '') as ProgramNum
from yourTable
如果前缀可以不同但始终使用冒号与值分隔,则可以使用以下内容:
select
right(ProgramField, len(ProgramField) - charindex(':', ProgramField)) as ProgramNum
from yourTable
答案 1 :(得分:5)
最简单的方法是使用STUFF
SELECT STUFF(ProgramField, 1, charindex(':', ProgramField), '')
FROM yourtable
如果您的某些行中有多个冒号的脏数据或冒号丢失,您可以从右向左搜索第一个无数字字符,您可以使用此方法,这可以处理各种有趣的数据:
SELECT
STUFF(RIGHT('@'+ProgramField, PATINDEX('%[^0-9]%',REVERSE(ProgramField)+'@')),1,1,'')
答案 2 :(得分:1)