Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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拆分数字的步骤_Sql_Sql Server - Fatal编程技术网

使用sql server拆分数字的步骤

使用sql server拆分数字的步骤,sql,sql-server,Sql,Sql Server,我有一个select查询,我想将数字拆分为3个值。请帮我做这个 SELECT Code FROM Source code ---------------- 21859633525935 我想使用SELECTquery将code拆分为3个值并显示在3列中,即: 第一个值第二个值第三个值 --------------------------------------------------- 21 85963 3525935 如果输入是字符类型(

我有一个select查询,我想将数字拆分为3个值。请帮我做这个

SELECT Code FROM Source
code
----------------
21859633525935
我想使用
SELECT
query将
code
拆分为3个值并显示在3列中,即:

第一个值第二个值第三个值
--------------------------------------------------- 
21               85963            3525935

如果输入是字符类型(char、varchar),则各种字符串函数将执行以下操作:

SELECT 
    First  = LEFT(code,2), 
    Second = SUBSTRING(code, 3, 5), 
    Third  = SUBSTRING(code, 8, 14) -- or RIGHT(code, 7)
FROM Source
如果是数字类型(例如bigint),则必须首先将其转换为字符类型:

SELECT 
    First  = LEFT(CAST(code AS varchar(14)),2), 
    Second = SUBSTRING(CAST(code AS varchar(14)), 3, 5), 
    Third  = SUBSTRING(CAST(code AS varchar(14)), 8, 14)
FROM Source
或者(如果它是一个数字),您可以使用算术:

SELECT 
    CAST(code / 1000000000000 AS int),
    CAST((code / 1000000000000-CAST(code / 1000000000000 AS int))* 1000000 AS int),
    code % 10000000
FROM Source

首先检查代码的数据类型,然后将其拆分

 IF (SELECT data_type 
    FROM Information_Schema.Columns 
    WHERE Table_Name= 'SOURCE'
    AND Column_Name = 'CODE' ) LIKE '%CHAR' --CHECK DATA TYPE OF CODE
BEGIN 
SELECT    substring([Code] ,1,2)   [First value],
          substring([Code] ,3,5)   [Second value],
          substring([Code] ,8,7)   [Third value]
FROM Source
END
ELSE
BEGIN
SELECT    substring(CONVERT(VARCHAR(50),[Code]) ,1,2)   [First value],
          substring(CONVERT(VARCHAR(50),[Code]) ,3,5)   [Second value],
          substring(CONVERT(VARCHAR(50),[Code]) ,8,7)   [Third value]
FROM Source
END

这些数字的长度是固定的吗?第一个=2,第二个=5,第三个=7?