cod*_*000 18 sql-server string
我有一个varchar(50)sql server列,其数据如下:
RawData
----------------------------
Washington 40 New Orleans 32
Detroit 27 St. Louis 23
Run Code Online (Sandbox Code Playgroud)
我正在尝试解析数据,所以我有这样的事情:
WinningTeam WinningTeamScore LosingTeam LosingTeamScore
----------- ---------------- ---------- ---------------
Washington 40 New Orleans 32
Detroit 27 St. Louis 23
Run Code Online (Sandbox Code Playgroud)
我被卡住了.我打算用charindex找到第一个空间,但是一些城市名称(圣路易斯,纽约等)的名字中有空格.
有没有办法识别字符串中第一个数字的位置?
谢谢
Mar*_*ith 35
有没有办法识别字符串中第一个数字的位置?
是
SELECT PATINDEX('%[0-9]%','Washington 40 New Orleans 32')
Run Code Online (Sandbox Code Playgroud)
PATINDEX如果找不到模式则返回0,否则返回1匹配开头的基础索引.
这是一个非常丑陋的实现,PATINDEX()它返回多列中的数据:
SELECT rtrim(substring(RawData, 1, PATINDEX('%[0-9]%', RawData) -1)) WinningTeam,
ltrim(rtrim(substring(RawData, PATINDEX('%[0-9]%', RawData), 2))) WinningTeamScore,
reverse(ltrim(rtrim(substring(reverse(SUBSTRING(RawData, 1, LEN(rawdata) - (PATINDEX('%[aA-zZ]%', REVERSE(rawData)) - PATINDEX('%[0-9]%', reverse(RawData))))), 1, PATINDEX('%[0-9]%', SUBSTRING(RawData, 1, LEN(rawdata) - (PATINDEX('%[aA-zZ]%', REVERSE(rawData)) - PATINDEX('%[0-9]%', reverse(RawData))))))))) LosingTeam,
substring(reverse(RawData), PATINDEX('%[0-9]%', reverse(RawData)), (PATINDEX('%[aA-zZ]%', REVERSE(rawData)) - PATINDEX('%[0-9]%', reverse(RawData)))) LosingTeamScore
from yourtable
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
74866 次 |
| 最近记录: |