2016-11-21 87 views
4

比方說,我們節省了table內上ColumnString以下值:替換第一個出現的'。'在SQL字符串

Select ValuesT from TableT; 

    ValuesT 
-9.827.08 
-9.657.40 
-80.000.00 
-8.700.00 
-8.542.43 
-8.403.00 

怎麼可能什麼也沒有隻中第一次出現「替代」。 (點)從字符串?

例:對於-9.827.08應該-9827.08

我試着用stuff功能,但是這不會對-80.000.00

select stuff(ValuesT ,3,1,'') from TableT 

回答

11

使用STUFF功能

工作查找使用CHARINDEX.第一次出現並使用STUFF

將其刪除3210
SELECT STUFF(valuesT, CHARINDEX('.', valuesT), 1, '') 
FROM TableT 
1

另一種方式。

WITH sampleData AS 
( 
    SELECT val FROM (VALUES 
    ('-9.827.08'), ('-9.657.40'), ('-80.000.00'), ('-8.700.00'), 
    ('-8.542.43'),('-8.403.00')) x(val) 
) 
SELECT SUBSTRING(val, 1, d1.d-1)+SUBSTRING(val, d1.d+1, 100) 
FROM sampleData 
CROSS APPLY (VALUES (CHARINDEX('.',val))) d1(d); 

它多一點的代碼,但效率一樣。你可以用這種技術做更多的事情。

+0

不錯! CTE中的VALUES的範圍是什麼?我也嘗試了CTE,但是我沒有拿出結果。 10x –

+1

CTE只是一個模擬真實表格的快速方法。沒有不同,如果我這樣做: CREATE table dbo.sampledata(val varchar(20)); ('-8.827.08'),(''-80.000.00'),('-8.700.00'), ('-8.542。')。 43 '),(' - 8.403.00' ); (VAL,1,d1.d + 1,100) FROM dbo.sampleData CROSS APPLY(VALUES(CHARINDEX('。',val)))d1 (d); 編輯:剛纔瞭解到你不能在這些回覆中執行SQL代碼;) –

+0

謝謝!我只是複製了SQL環境中的代碼並在那裏合成。 –

相關問題