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