从sql中的字符串中删除空格

时间:2018-01-09 13:41:49

标签: sql substring charindex

SELECT CONVERT(DECIMAL(18,2)
               ,ROUND(  REPLACE
                        (
                          REPLACE(
                                   SUBSTRING([ColumnName],0, CHARINDEX(' ',[ColumnName],1) )
                                   ,'$',''
                                 )
                          ,',',''
                        ) 
                        ,2
                      )
               ) AS 'ColumnName' 
       ,[ColumnName]
       ,* 
FROM TABLENAME

CHARINDEX返回空间索引,但当数据中没有空格时,它返回0。我想要的是,当最终数据中有空格时,SUBSTRING应该考虑到这一点,当没有空格时,它应该考虑字符串的长度。

2 个答案:

答案 0 :(得分:0)

您似乎正在使用SQL Server,然后我想应用case表达式

case when CHARINDEX(' ',[ColumnName],1) > 0 
     then CHARINDEX(' ',[ColumnName],1) 
     else len([ColumnName]) end

答案 1 :(得分:0)

显然您正在使用sql-server,并希望将$123,456,789.99之类的字符串转换为DECIMAL

TRY_PARSE可以为您提供所需的结果:

SELECT
TRY_PARSE(REPLACE('$123,456,789.99   ', '$', '')
          AS DECIMAL(18,2)
          USING 'en-US') AS myDecimalNumber

或者,如果您选择使用MONEY数据类型,则可以省略REPLACE

SELECT
TRY_PARSE('$123,456,789.99   '
          AS MONEY
          USING 'en-US')) AS myDecimalNumber