有谁能告诉我为什么LikeString变量总是%
?这是代码:
DECLARE @LikeString NVARCHAR = CAST('%4075%' AS nvarchar)
SELECT @LikeString
我已在SQL Server 2008 R2和SQL Server 2012中尝试过此操作,但@LikeString
始终包含%
而不是%4075%
。
答案 0 :(得分:2)
代表char
,varchar
,nchar
,nvarchar
如果在变量声明语句中未指定大小,则默认长度为1
DECLARE @LikeString NVARCHAR(6) = CAST('%4075%' AS nvarchar(6))
SELECT @LikeString
或更简单:
DECLARE @LikeString NVARCHAR(6) = N'%4075%'
SELECT @LikeString
答案 1 :(得分:1)
从SQL Server 2008 R2 Transact-SQL文档...
“如果未在数据定义或变量声明语句中指定n,则默认长度为1.如果未使用CAST函数指定n,则默认长度为30.”
https://msdn.microsoft.com/en-us/library/ms186939(v=sql.105).aspx
您正在使用变量声明语句,因此当您尝试使用“%4075%”初始化变量时,除字符串之外的所有字符都将被截断。
因此,正如其他人所说,解决方案是指定nvarchar数据类型变量的长度。
答案 2 :(得分:0)
使用此:
DECLARE @LikeString NVARCHAR(50) = CAST('%4075%' AS nvarchar(50))
SELECT @LikeString