gpt4 book ai didi

sql-server - 使用双引号定义字段别名是最好的解决方案吗?

转载 作者:行者123 更新时间:2023-12-03 15:28:59 26 4
gpt4 key购买 nike

我在运行时创建一个查询(使用我的 Delphi 应用程序)然后执行

EXEC (MyRunTimeGeneratedQuery)

一个例子是这样的:

SELECT
1977 AS [[Employee] Year Of Birth],
'Marc' AS [[Employee] Name]

一个数据库字段包含“[员工]出生日期”,因此在结果查询中我有一个双“]”,这会产生语法错误。 “Employee”后面的“]”之后的 SQL Server 需要“,”。

我发现一个解决方案是使用双引号将所有字段别名括起来:

SELECT
1977 AS "[Employee] Year Of Birth",
'Marc' AS "[Employee] Name"

这是一个可靠的解决方案吗?如果有的话,有哪些缺点? (这是我的问题!)

我能想到的另一个解决方案是不允许用户存储“]”,这样

“[员工]出生日期”

可能会变成

“(员工)出生日期”

最佳答案

如果别名中可能包含 ",例如,使用 " 作为字段别名的封闭字符可能会导致相同的问题。别名“Employee”出生年份,我想查询的结果如下:

SELECT
1977 AS ""Employee" Year Of Birth",
-- etc.

这在语法上是错误的。

我认为正确的做法是引用别名。如果使用 " 作为别名封闭字符,则在编写查询时应将原始别名中的每个 " 加倍。如果您使用 [],则应将原始别名中的每个 ] 加倍。

函数 quotename 将为您执行相同的操作(以及将别名括起来 []),但您无法使用它如:

SELECT
1977 AS quotename('[Employee] Year Of Birth'),
-- etc.

如果您希望使用quotename,则应在编写查询之前完成(除非quotename本身是查询的一部分)。

关于sql-server - 使用双引号定义字段别名是最好的解决方案吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18594386/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com