Sql 检查长度并添加相应的列
我有一张有两列的表。根据一列中数据的长度,我需要连接下一列。我怎样才能继续进行这项工作。我有基本SQL,但我不能将列连接在一起,并将两个数据显示在一个表中 当前表如下所示:Sql 检查长度并添加相应的列,sql,sql-server,Sql,Sql Server,我有一张有两列的表。根据一列中数据的长度,我需要连接下一列。我怎样才能继续进行这项工作。我有基本SQL,但我不能将列连接在一起,并将两个数据显示在一个表中 当前表如下所示: ID Code ---------- ---------- ST01 00 ST0105 05 ET2256 56 在选择查询之后,我想 ID ---------- ST0100
ID Code
---------- ----------
ST01 00
ST0105 05
ET2256 56
在选择查询之后,我想
ID
----------
ST0100
ST0105
ET2256
如您所见,当ST01少于5个字符时,我需要将代码列添加到其中。当ID的长度更大时,我不需要添加。我怎样才能做到。数据库正在生产中,我无法编辑,因为所有旧的应用程序都已配置并正在运行。但是我正在构建的应用程序使用7字符格式。所以我不能编辑表格。我只需要做一个select语句
SELECT
CASE ID
WHEN ((LEN(ID))<>5) THEN ID=(RTRIM(ID)+LTRIM(Code))
FROM tblID
ORDER BY ID DESC
选择
病例ID
当((LEN(ID))5)时,则ID=(RTRIM(ID)+LTRIM(Code))
来自tblID
按ID描述订购
根据你的解释,我猜:
SELECT
CASE
WHEN ((LEN(ID))<5) THEN (RTRIM(ID)+LTRIM(Code)) ELSE ID END AS ID
FROM tblID
ORDER BY ID DESC
选择
案例
当((LEN(ID))尝试以下操作:
SELECT
CASE
WHEN LEN(ID) <> 6 THEN SUBSTRING(ID, 1, 6-LEN(Code)) + Code
ELSE ID
END as Code
FROM tblID
ORDER BY ID DESC;
SELECT
CASE
WHEN LEN(ID) < 6 THEN LEFT(ID + Code),6)
ELSE ID
END AS Code
FROM tblID
ORDER BY ID DESC;
选择
案例
当LEN(ID)6时,则子串(ID,1,6-LEN(Code))+Code
其他ID
以代码结尾
来自tblID
按ID描述订购;
试试这个:
SELECT
CASE
WHEN LEN(ID) <> 6 THEN SUBSTRING(ID, 1, 6-LEN(Code)) + Code
ELSE ID
END as Code
FROM tblID
ORDER BY ID DESC;
SELECT
CASE
WHEN LEN(ID) < 6 THEN LEFT(ID + Code),6)
ELSE ID
END AS Code
FROM tblID
ORDER BY ID DESC;
选择
案例
当LEN(ID)<6时,然后向左(ID+代码),6)
其他ID
以代码结尾
来自tblID
按ID描述订购;
您说少于5个字符,但与不相等的5个字符相比,6个字符也将匹配。另外,不要在以下情况中使用=
:当a=b时,则a ELSE c结束为ID时,ID的最大可能长度是多少?始终为6个字母?@shree.pat18最大值为7SUBSTRING()
缺少参数。另外,CONCAT()
是一个2012函数,OP似乎没有明确说明使用哪个版本use@MarkD使用2005 MSSQL请参见上面的修订版查询,该查询与MSSQL 2005兼容。