sql - 如何在 SQL Server 中正确实现 quotename?

标签 sql sql-server t-sql reporting-services sql-server-2014

背景信息:

我有一个正在填充 SSRS 报告的存储过程。 SSRS 报告将运行并导出为 CSV。然后将其作为文本文件打开并通过第 3 方供应商应用程序运行。

教科书的输出应如下所示:

    lid, status, i_flag,Count, pDate, iDate
    62558633,"Text Value","08/16",11,"08/16","08/16"
    78013526,"Text Value","",,"08/16""08/16"

我的结果如下所示:

    lid, status, i_flag,Count,pDate,iDate
    19007442,"'Dir,MgmtII'",'',2,'','02/16' 
    17343623,'Text','',0,'11/15','02/16'

现在我使用的代码是:

SELECT 
    quotename(isnull(i_flag,''''), '''') as i_flag,
    isnull(lid, 0) as lid,
    quotename(isnull(status,''''), '''') as status,
    isnull(Count, 0) as Count,
    quotename(isnull(p_Date,''''), '''') as p_Date,
    quotename(isnull(i_Date,''''), '''') as i_Date
FROM
    #Table 

关于如何解决这个问题的任何想法。被这个问题困扰了一段时间。谢谢。

最佳答案

如果我正确理解你的问题(我很可能没有),我认为你想要:

SELECT 
    QUOTENAME(ISNULL(i_flag,''), '"') AS i_flag,
    ISNULL(lid, 0) AS lid,
    QUOTENAME(ISNULL([status],''), '"') AS [status],
    ISNULL([Count], 0) AS [Count],
    QUOTENAME(ISNULL(p_Date,''), '"') AS p_Date,
    QUOTENAME(ISNULL(i_Date,''), '"') AS i_Date
FROM
    #Table

听起来您在字段中有一些值需要用双引号括起来 " 以便导出到 CSV,而且在某些情况下这些字段中的值可能为 NULL。

我上面的建议通过首先使用 ISNULL 将任何 NULL 值替换为空字符串,然后使用 QUOTENAME 将结果值括在双引号中来处理此问题。

与您发布的代码的关键区别是:

  • 使用 ISNULL 时,我将 NULL 替换为空字符串 '',而不是包含单引号字符的字符串 '''' (字符串中两个连续的单引号表示转义的文字单引号字符)
  • 当使用 QUOTENAME 将值括在双引号中时,我在第二个参数中指定包含双引号 '"' 的字符串,而不是包含单引号字符''''.

我希望这对您有帮助 - 如果您仍然遇到问题,也许您可​​以提供 #Table 临时表中的一些示例行以及您期望从查询中获得的输出,以便人们可以进一步帮助您。

顺便说一句,使用 SQL 保留关键字(如 statuscount)作为列名或别名并不是一个好习惯,但如果必须的话,我建议将其括起来将它们放在方括号中(即 [status])以提高可读性(特别是在 SSMS 或任何具有 SQL 语法突出显示或颜色编码的 IDE 中),正如我上面所做的那样。

关于sql - 如何在 SQL Server 中正确实现 quotename?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40410085/

相关文章:

sql - 无法在我的系统上使用单例中的作用域服务 - 但在 azure 上它可以工作(全部在 net 5 中)

java - 数据集中的 SQL 频率计数

sql - 如何在游标内的动态查询中为参数赋值

sql - SQL Join 查询的执行顺序是什么?

SQL/T-SQL短路

c# - SqlCommand.Connection 上的 using 语句的行为是否相同?

php - 通过从表中传递多个分隔的逗号 id 获取记录,其中 id 在 mysql 表中也是逗号分隔的

SQL Server 'In' 语句项性能顺序

sql-server - SqlDependency 与 SQLCLR 对 WebService 的调用

javascript - 将表从数据库导出到 csv 文件