我想從1.2.3
得到值1.23
。同樣,我也從1.2.3 ... x中得到值1.2.3 ... x。我怎樣才能在SQL中做到這一點?從SQL 1.2.3返回1.23?
後,我得到數串本主題:現在How to get number from String sql
,這個值是1.2.3。當我施放時,sql注意到一個錯誤:「將數據類型nvarchar轉換爲浮點數時出錯」並且我想從1.2.3返回值1.23
我想從1.2.3
得到值1.23
。同樣,我也從1.2.3 ... x中得到值1.2.3 ... x。我怎樣才能在SQL中做到這一點?從SQL 1.2.3返回1.23?
後,我得到數串本主題:現在How to get number from String sql
,這個值是1.2.3。當我施放時,sql注意到一個錯誤:「將數據類型nvarchar轉換爲浮點數時出錯」並且我想從1.2.3返回值1.23
你也可以使用的STUFF
和REPLACE
和CHARINDEX
組合來實現你所需要的。該解決方案節省了.
第一的位置,取代其他所有的小數點,然後充塞回。像這樣的事情
;WITH CTE AS
(
SELECT '1.23' as CharCol
UNION ALL SELECT '6.7.1.'
UNION ALL SELECT '4.2.3'
UNION ALL SELECT '1.46'
UNION ALL SELECT '5.43'
UNION ALL SELECT '90'
)
SELECT
CASE WHEN CHARINDEX('.',CharCol) = 0
THEN CharCol
ELSE STUFF(REPLACE(CharCol,'.',''),CHARINDEX('.',CharCol),0,'.')
END
FROM CTE;
謝謝,這個好主意! – Bader
您可以使用SUBSTRING,REPLACE和PATINDEX的醜陋組合。類似於
SELECT
SUBSTRING(a, 1, PATINDEX('%.%', a) - 1) AS pre
,REPLACE(SUBSTRING(a, PATINDEX('%.%', a), LEN(a)), '.', '') AS post
,SUBSTRING(a, 1, PATINDEX('%.%', a) - 1) + '.' + REPLACE(SUBSTRING(a, PATINDEX('%.%', a), LEN(a)), '.', '') AS result
FROM (
SELECT
'1.2.3' AS a
) I
前後列是兩個半部分,附加了一個'。'。在結果列中。
之前的數字'。'將保留在之前,而第一個'之後的任何數字。將''放在一起後。 例如 432.546.3.132.6 = 432.54631326
你需要提供你嘗試過什麼,所以更多的數據和實例。 – ScarletMerlin
@ScarletMerlin:嗯,不是真的。這裏有足夠的答案來回答這個問題,無論海報是否投入了很多精力。 –
@NathanTuggy我知道你可以建立一個簡單的查詢來格式化一個字符串,以提供所需的結果。問題在於我們沒有解決問題的背景。 – ScarletMerlin