带有引号的SQL select语句删除最后一行的最后一个字符

时间:2014-04-03 14:27:24

标签: sql sql-server

我有select语句,使用QUOTNAME为每个结果添加单引号和逗号。

SELECT QUOTENAME(field1,'''')+',' AS [1]

这改变了结果。

  1
11111
22222
33333
44444

到此

   1
'11111',
'22222',
'33333',
'44444',

但是我想知道是否可以删除最后一行的逗号?太像这样了。

   1
'11111',
'22222',
'33333',
'44444'

编辑:我应该提到这是一个视图

3 个答案:

答案 0 :(得分:3)

SELECT QUOTENAME(field1,'''')+
   case when row_number() over(order by (select 1))= 
   count(*) over () then '' else ',' end AS [1]
FROM <table>

答案 1 :(得分:0)

尝试这样的事情

DECLARE @count int
SELECT @count = COUNT(*) FROM my_table
SELECT QUOTENAME(field1, '''') + CASE WHEN ROW_NUMBER() OVER (ORDER BY field1) < @count THEN ',' ELSE '' END AS [1]
FROM my_table

答案 2 :(得分:0)

我想说SQL是格式化数据的错误位置,应该在您的应用程序或客户端中完成。

但是,正如您所说,这是可能的,这是一种方法:

WITH
  MyData AS (
    SELECT
      field1,
      ROW_NUMBER() OVER(ORDER BY field1 DESC) AS rowNo
    FROM Data
  )
SELECT
  CONCAT(
    QUOTENAME( field1, '''' ),
    (CASE WHEN rowNo <> 1 THEN ',' END)
  ) AS [1]
FROM MyData
ORDER BY rowNo DESC;

SQL Fiddle