我有一個數據庫列,並給它一個字符串,如,Recovery, Pump Exchange,
。如何替換SQL Server中列的第一個和最後一個字符?
我想從字符串中刪除第一個和最後一個逗號。
預期結果:。
我有一個數據庫列,並給它一個字符串,如,Recovery, Pump Exchange,
。如何替換SQL Server中列的第一個和最後一個字符?
我想從字符串中刪除第一個和最後一個逗號。
預期結果:。
您可以使用SUBSTRING
爲:
SELECT
SUBSTRING(col, 2, LEN(col)-2)
FROM ...
顯然,一個更好的辦法是不要把開頭和結尾逗號出現在首位,如果這是一個選項。
我想刪除最後和第一個逗號,除非存在否則不存在。
表達變得稍微複雜一些,但這個想法是一樣的:
SELECT SUBSTRING(
col
, CASE LEFT(@col,1) WHEN ',' THEN 2 ELSE 1 END
, LEN(@col) -- Start with the full length
-- Subtract 1 for comma on the left
- CASE LEFT(@col,1) WHEN ',' THEN 1 ELSE 0 END
-- Subtract 1 for comma on the right
- CASE RIGHT(@col,1) WHEN ',' THEN 1 ELSE 0 END
)
FROM ...
我只想刪除最後和第一個逗號,如果存在其他明智的不是。 –
@ManishSharma: - 那麼你可能想檢查bendataclear答案! –
對不起,但我已經使用this.bu數據不能正常發佈,所以我想在我的問題下面發表評論。 –
嘗試這樣的:
if(Substring(@mykeyword, 1,1) = ',' and Substring(@mykeyword, LEN(@mykeyword) - 1, LEN(@mykeyword))=',')
SET @mykeyword = Substring(@mykeyword, 2, LEN(@mykeyword) - 2)
但我如何在SQL quesry中使用這個請提供正確的查詢。 –
使用Substring()
:
SET @String=SUBSTRING(@String ,2,Len(@String)-2)
SUBSTRING()
返回部分o表達。
語法:
SUBSTRING (expression ,start , length)
或者到dasblinkenlight的方法,你可以使用替換:
DECLARE @words VARCHAR(50) = ',Recovery, Pump Exchange,'
SELECT REPLACE(','+ @words + ',',',,','')
使用LEN可能會適得其反,因爲LEN忽略尾隨空格。由於ANSI_PADDING默認爲ON,因此可能會添加這些值。所以,你需要RTRIM。
爲了完整起見,我添加了LTRIM太...
REVERSE(SUBSTRING(REVERSE(RTRIM(LTRIM(SUBSTRING(MyCol, 2, 8000)))), 2, 8000))
SELECT LEFT(RIGHT(',Recovery, Pump Exchange,',LEN(',Recovery, Pump Exchange,')-1),LEN(',Recovery, Pump Exchange,')-2)
如果第一和最後一個逗號沒有在字符串存在,則因爲它是導致來。 –
逗號分隔列表存儲在單個數據庫列中時會出現大量問題。從長遠來看,將*這些值存儲爲不同的行是*更好*。對於如何使用和操作這樣的設計不佳的列,SO中充滿了相同的重複問題。如果這不在你的控制範圍內,我感覺很糟糕,但是你正試圖解決一個問題,爲什麼不能一路走下去,並創建一個新的子表,並將每個值分開? –