Sye*_*hah 0 sql t-sql sql-server sql-server-2000
我有IDNumber列的表,其中包含所有数字或字母数字,其中前两个或前三个或前三个字符是字母。我要做的就是从该值中删除那些字母。
请注意,数据库位于SQL Server 2000中。
例如:
1430112345679 (This is OK)
PO02456977785 (Remove first two letters)
C035343542654 (Remove first letter)
QPD1236548 (Remove first three letters)
Run Code Online (Sandbox Code Playgroud)
在任何受支持的SQL Server版本中,这应该可以完成您想要的工作:
select idNumber, stuff(idNumber, 1, patindex('%[0-9]%', idNumber) - 1, '')
Run Code Online (Sandbox Code Playgroud)
这是db <>小提琴。
在SQL Server 2000中-很长时间以来一直不支持它-您可以做一些更暴力的事情:
select (case when idNumber like '[0-9]%' then idNumber
when idNumber like '_[0-9]%' then substring(idNumber, 2, len(idNumber))
when idNumber like '__[0-9]%' then substring(idNumber, 3, len(idNumber))
when idNumber like '___[0-9]%' then substring(idNumber, 4, len(idNumber))
. . . -- however many clauses you need
end)
Run Code Online (Sandbox Code Playgroud)
或使用LIKE:
select (case when left(idNumber, 1) between '0' and '9' then idNumber
when substring(idNumber, 2, 1) between '0' and '9'
then substring(idNumber, 2, len(idNumber))
when substring(idNumber, 3, 1) between '0' and '9'
then substring(idNumber, 3, len(idNumber))
when substring(idNumber, 4, 1) between '0' and '9'
then substring(idNumber, 4, len(idNumber))
. . . -- however many clauses you need
end)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
69 次 |
| 最近记录: |