【发布时间】:2018-10-15 13:15:32
【问题描述】:
我必须连接几个字段来生成唯一键,为此我想组合 3 个具有不同数据类型的字段:integer、date 和 string。
我在 SQL Server 2012 中使用的:
CONCAT(PMEOBJECT.OBJECTID, '-', PMEOBJECT.FROMDATE, '-', PMEBUILDING.NAME) AS OBJECTIDKEY
任何想法如何在 SQL Server 2008 中编写此代码?
编辑:还必须考虑 NULLS。 编辑:我在两者之间添加了 ISNULL(PMEOBJECT.FROMDATE, '') 以使其工作。谢谢大家。
【问题讨论】:
-
您需要将非字符串转换为字符串,然后使用“+”连接它们。
-
即使在 SQL Server 2012 中,您也不会为此使用
CONCAT,因为您真的不想依赖DATE的默认转换格式(可能因语言而异)。明确使用CONVERT。 -
为什么不直接使用代理键?
-
请记住,CONCAT 会将 NULL 隐式转换为空字符串。使用 '+' 不会那样做。如果你使用 '+' 连接字符串,并且其中任何一个为 NULL,那么整个结果将为 NULL。
-
非常感谢您的回复。现在我确实遇到了 NULL 的问题。我需要连接几列来创建一个唯一键,其中一些列具有 NULL 值。如何处理?
标签: sql sql-server tsql sql-server-2008 concat