如何在视图中拼接多类型数据生成指定格式的唯一UTableID?
解决SQL拼接多类型生成指定格式唯一ID的问题
你的问题核心在于两个关键点:一是数值类型直接相加会被SQL当成算术运算,而非字符串拼接,二是日期转换时未指定目标格式,导致返回了默认的长日期字符串。
正确的SQL语句写法
针对SQL Server环境,你可以这样修改语句:
CAST(T.DateID AS VARCHAR) + '-' + CAST(P.LinkID AS VARCHAR) + '-' + CONVERT(VARCHAR(8), P.PicDateStamp, 112) AS UTableID
也可以统一用CONVERT处理数值类型(效果和CAST一致):
CONVERT(VARCHAR, T.DateID) + '-' + CONVERT(VARCHAR, P.LinkID) + '-' + CONVERT(VARCHAR(8), P.PicDateStamp, 112) AS UTableID
关键细节解释
- 数值转字符串:把
DateID和LinkID显式转换为VARCHAR,避免SQL误将T.DateID + '-' + P.LinkID判定为数值加法(比如22+74会得到96,而非你需要的"22-74")。 - 日期格式控制:
CONVERT(VARCHAR(8), P.PicDateStamp, 112)中的112是SQL Server专属的日期格式代码,专门生成yyyyMMdd格式的字符串(比如2018年1月15日会转为"20180115"),完美匹配你想要的格式。
测试验证
当DateID=22、LinkID=74、PicDateStamp='2018-01-15'时,执行上述语句会生成你期望的结果:22-74-20180115。
内容的提问来源于stack exchange,提问作者Johnny Bones
相关产品推荐
相关产品推荐

