Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 CASE语句添加前导零0 SQL_Sql Server 2008_Tsql_Sql Server 2008 R2 - Fatal编程技术网

Sql server 2008 CASE语句添加前导零0 SQL

Sql server 2008 CASE语句添加前导零0 SQL,sql-server-2008,tsql,sql-server-2008-r2,Sql Server 2008,Tsql,Sql Server 2008 R2,我有一个案例陈述,看起来像这样 SELECT Location, CASE WHEN id BETWEEN 1 AND 7 THEN '05' ELSE '01' END AS id FROM Locations 但是,它返回5或1,不带前导零 我已经尝试了CAST('05'作为sql\u变体),但我将使用这个select作为一个insert语句插入到一个表中,它是一个nvarchar字段,所以它不喜欢这样 有什么想法吗?谢谢我在SQL 2008R2上尝试了您的查询,效果很好 您始终可以这样做

我有一个案例陈述,看起来像这样

SELECT
Location,
CASE WHEN id BETWEEN 1 AND 7 THEN '05' ELSE '01' END AS id
FROM Locations
但是,它返回5或1,不带前导零

我已经尝试了
CAST('05'作为sql\u变体)
,但我将使用这个select作为一个insert语句插入到一个表中,它是一个nvarchar字段,所以它不喜欢这样


有什么想法吗?谢谢

我在SQL 2008R2上尝试了您的查询,效果很好

您始终可以这样做:

SELECT
 Location,
 right('0'+convert(varchar(2), CASE WHEN id BETWEEN 1 AND 7 THEN '5' ELSE '1' END), 2) AS id
FROM Locations
您是将值绑定到变量中还是直接插入到另一个表中? 前任: 插入表2中选择…

选择 位置, 如果id介于1和7之间,则转换(nvarchar,'05'),否则转换(nvarchar,'01')结束为id 从地点


will do

不应去掉前导零,因为两个分支都是字符串。您如何运行查询?它应该显示
'05'
'01'
。除非这是一个子查询联合到另一个子查询,该子查询有整数列,并且这些值被转换。不,这实际上是完整的选择无子查询等。您对结果做了什么?您要将它们插入到表中吗?如果是的话,这是什么定义?您是否在应用程序中查看它们?如果是这样的话,那又怎样?谢谢,工作了一顿,不知道为什么另一句话不起作用