积极答复者
这是SQLSERVER2012的bug吗?

问题
-
;with t1 as ( select 1 c1,2 c2,3 c3 ) Select Concat( c1 , c2 , c3) from t1 ;with t1 as ( select 1 c1,2 c2,3 c3 ) Select { fn Concat( c1 , c2 , c3)} from t1 --Concat 函数要求有 2 个参数。
上下2个sql语句,
上面可以正常执行返回结果 123
下面会报Concat 函数要求有 2 个参数。
在创建视图的时候Concat( c1 , c2 , c3) 会被强制转换成 { fn Concat( c1 , c2 , c3)} 导致出现错误,无法保存。
这是sqlserver2012的bug,还是我哪里没弄对?
答案
全部回复
-
您好,
請問您說建立View時會錯誤嗎?
我試了一下,不會有錯誤!
IF object_id(N'view1', 'V') IS NOT NULL DROP VIEW view1 GO CREATE VIEW view1 AS with t1 as ( select 1 c1,2 c2,3 c3 ) Select Concat( c1 , c2 , c3) AS c123 from t1 go SELECT * FROM dbo.view1;
還是我有誤解呢?
-
测试后发现
CONCAT 直接使用时没有任何问题。
使用 {fn CONCAT()} 后问题超多。
Select CONCAT('a','b')
Select CONCAT(1,'a')
Select CONCAT('a','b','c')
Select CONCAT(1,2)
Select CONCAT('a',NULL)
--ab
--1a
--abc
--12
-a
Select {fn CONCAT('a','b')}
Select {fn CONCAT(1,'a')}
Select {fn CONCAT('a','b','c')}
Select {fn CONCAT(1,2)}
Select {fn CONCAT('a',NULL)}
--ab
--数据类型 int 和 varchar 在 concat 运算符中不兼容。
--CONCAT 函数要求有 2 个参数。
--操作数数据类型 int 对于 concat 运算符无效。
--NULL
使用sql语句 可以创建 直接用 CONCAT的视图
但是无法用SSMS进行重新设计,一打开就崩溃用SSMS创建视图的时候会被强制转换为 {fn concat()}的形式
真是恶心的bug