16 sql sql-server
我有以下字符串.
Input
--------------
2030031469-NAI
Run Code Online (Sandbox Code Playgroud)
要获取数字部分,我使用以下脚本
declare @str varchar(50)= '2030031469-NAI'
Select
@str
,SUBSTRING(@str, 1, NULLIF(CHARINDEX('-', @str) - 1, -1))
,Left(@str,PATINDEX('%-%',@str)-1)
Run Code Online (Sandbox Code Playgroud)
获得以下输出
Output:
----------
2030031469
Run Code Online (Sandbox Code Playgroud)
有没有其他简单/优雅的方式做同样的事情?
Mik*_*son 30
select left(@str, patindex('%[^0-9]%', @str+'.') - 1)
Run Code Online (Sandbox Code Playgroud)
如果您的字符串以字母开头并以数字结尾,如ERT-123
您可以使用此查询:
(select substring(@str,patindex('%[0-9]%', @str),len(@str)))
Run Code Online (Sandbox Code Playgroud)
请检查这个,我在我的项目中用于提取电话号码
CREATE Function [dbo].[RemoveNonNumericCharacters](@Temp VarChar(1000))
Returns VarChar(1000)
AS
Begin
While PatIndex('%[^0-9]%', @Temp) > 0
Set @Temp = Stuff(@Temp, PatIndex('%[^0-9]%', @Temp), 1, '')
Return @TEmp
End
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
40073 次 |
最近记录: |