Search code examples
sqlsql-serversql-server-2008

SQL : remove last comma in string


I have a text memo field in SQL table that I need to remove the last character in the field if it's a comma.

So, for example, if I have these rows, I need to remove the commas from rows 2 and 4.

  INETSHORTD
1  94
2  85,
3  94, 92
4  89, 99, 32,

The output would be:

  INETSHORTD
  94
  85
  94, 92
  89, 99, 32

Any ideas?


Solution

  • Using REVERSE and STUFF:

    SELECT
        REVERSE(
            STUFF(
                REVERSE(LTRIM(RTRIM(INETSHORTD))), 
                1, 
                CASE WHEN SUBSTRING((REVERSE(LTRIM(RTRIM(INETSHORTD)))), 1, 1) = ',' THEN 1 ELSE 0 END, 
                ''
            )
        )
    FROM tbl
    

    First, you want to TRIM your data to get rid of leading and trailing spaces. Then REVERSE it and check if the first character is ,. If it is, remove it, otherwise do nothing. Then REVERSE it back again. You can remove the first character by using STUFF(string, 1, 1, '').

    SQL Fiddle