我有一個字符串列,我需要找到子字符串,直到找到第一個' - '。獲取子字符串,直到從右到左的特定字符SQL
示例列ELOT-IGS-2。我需要得到「2」作爲輸出。 這些列來自表,所以我無法將變量聲明爲固定字符串。
我試過LOCATE
,SUBSTRING_INDEX
但是沒有一個是在函數中構建的。
我也試過RIGHT(ID_BETSLIP,CHARINDEX('-',ID_BETSLIP)-1)
但是當我有2倍,這並不工作「 - 」
有沒有人有一個想法?
我有一個字符串列,我需要找到子字符串,直到找到第一個' - '。獲取子字符串,直到從右到左的特定字符SQL
示例列ELOT-IGS-2。我需要得到「2」作爲輸出。 這些列來自表,所以我無法將變量聲明爲固定字符串。
我試過LOCATE
,SUBSTRING_INDEX
但是沒有一個是在函數中構建的。
我也試過RIGHT(ID_BETSLIP,CHARINDEX('-',ID_BETSLIP)-1)
但是當我有2倍,這並不工作「 - 」
有沒有人有一個想法?
DECLARE @t varchar(20) = 'ELOT-IGS-2'
select REVERSE(SUBSTRING(reverse(@t),0,CHARINDEX ('-',REVERSE(@t))))
幾乎是男人!我得到了列PIK3-99701作爲輸出「10799」。有任何解決這個問題的方法嗎? –
編輯你現在可以檢查@YvesVanlathem – mohan111
Igor發佈了一些工作,但刪除了他的post.SUBSTRING(ID_BETSLIP,LEN(ID_BETSLIP) - CHARINDEX(' - ',REVERSE(ID_BETSLIP))+ 2,len(ID_BETSLIP))作爲測試 –
基礎上@ mohan111解決方案,您可以爲了得到你所需要的
DECLARE @t VARCHAR(20)添加REVERSE = 'ELOT-IGS-2' 選擇REVERSE(SUBSTRING (反向(@t),0,CHARINDEX(' - ',REVERSE(@t))))
的反向查詢,最字符串解析功能都沒有在SQL Server很好的解決方案,並且在大多數情況下,你最好做到這一點使用SQLCLR功能。
將
select SUBSTRING(reverse(ELOT-IGS-2),0,charindex('-',reverse(ELOT-IGS-2)))
select RIGHT(<your Field>, CHARINDEX('-',REVERSE(<your Field>))-1)
檢查此[LINK](http://stackoverflow.com/questions/16667251/query-to-get-only-numbers-from-a -string)或這[LINK](http://stackoverflow.com/questions/10443462/how-to-get-the-numeric-part-from-a-string-using-t-sql) – Abhi
我可以聲明一個varibale來自表中的列嗎? –