Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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 检查长度并添加相应的列_Sql_Sql Server - Fatal编程技术网

Sql 检查长度并添加相应的列

Sql 检查长度并添加相应的列,sql,sql-server,Sql,Sql Server,我有一张有两列的表。根据一列中数据的长度,我需要连接下一列。我怎样才能继续进行这项工作。我有基本SQL,但我不能将列连接在一起,并将两个数据显示在一个表中 当前表如下所示: ID Code ---------- ---------- ST01 00 ST0105 05 ET2256 56 在选择查询之后,我想 ID ---------- ST0100

我有一张有两列的表。根据一列中数据的长度,我需要连接下一列。我怎样才能继续进行这项工作。我有基本SQL,但我不能将列连接在一起,并将两个数据显示在一个表中

当前表如下所示:

     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最大值为7
SUBSTRING()
缺少参数。另外,
CONCAT()
是一个2012函数,OP似乎没有明确说明使用哪个版本use@MarkD使用2005 MSSQL请参见上面的修订版查询,该查询与MSSQL 2005兼容。