從以下字符串中刪除第一個逗號的最佳方法是什麼?結果應該是「測試,E,呃,T」用於字符串操作的SQL函數
DECLARE @source VARCHAR(100)
SET @source = ',TEST,e,er,t'
編輯:什麼是去除所有領先的逗號最好的辦法,如果有不止一個逗號嗎?
感謝
Lijo
從以下字符串中刪除第一個逗號的最佳方法是什麼?結果應該是「測試,E,呃,T」用於字符串操作的SQL函數
DECLARE @source VARCHAR(100)
SET @source = ',TEST,e,er,t'
編輯:什麼是去除所有領先的逗號最好的辦法,如果有不止一個逗號嗎?
感謝
Lijo
我個人喜歡T-SQL's STUFF() function這個。其中一個主要的原因是,我沒有在意字符串可以持續多久,換出8000 4000如果是NVARCHAR等
SELECT STUFF(@source, 1, 1, '');
編輯新/更改的要求,我們可能需要畢竟使用字符串:
SELECT SUBSTRING(@source, PATINDEX('%[^,]%', @source), 8000);
[注意,如果字符串包含只是逗號,這將返回所有逗號]
當然,你可以做到這一點與STUFF()還是:
SELECT STUFF(@source, 1, PATINDEX('%[^,]%', @source)-1, '');
但是,這將返回NULL爲一個字符串是所有逗號,所以如果NULL是不可取的,你可能想要將它包裝在COALESCE()中。
DECLARE @source VARCHAR(100);
SELECT @source = ',TEST,e,er,t';
SELECT @source = SUBSTRING(@source, 2, LEN(@source) - 1);
,最好的辦法是,如果你可以利用的字符串是如何被建成這樣分隔符不會被放置在那裏。
爲什麼評估LEN?它將刪除當然可能需要(或可能不需要)的尾隨空格...... – gbn
可能很難控制字符串的構建 - 可能在其他應用程序中完成,可以使用FOR XML PATH '等 –
您可以使用STUFF
DECLARE @source VARCHAR(100);
SELECT @source = ',TEST,e,er,t';
PRINT STUFF(@source,1,1,'')
我同意。還有一個問題,刪除所有主要逗號的最好方法是什麼? – Lijo