Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.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/21.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,我的电话号码如下: 13901210 我希望输出给出以下结果 1390/12/10 输入函数:多个bigint 输出:一个字符串 如何创建此函数?您可以尝试以下查询: SELECT SUBSTRING(CAST(13901210 AS varchar(8)), 1,4) + '/' + SUBSTRING(CAST(13901210 AS varchar(8)), 5,2) + '/' + SUBSTRING(CAST(13901210 AS varchar(8)), 7,2) 只需将值替换为

我的电话号码如下: 13901210 我希望输出给出以下结果 1390/12/10

输入函数:多个bigint 输出:一个字符串


如何创建此函数?

您可以尝试以下查询:

SELECT SUBSTRING(CAST(13901210 AS varchar(8)), 1,4) + '/' + SUBSTRING(CAST(13901210 AS varchar(8)), 5,2) + '/' + SUBSTRING(CAST(13901210 AS varchar(8)), 7,2)
只需将值替换为存储的任何字段/变量

完整功能如下所示:

CREATE FUNCTION [dbo].[int_to_slashed_string] ( @value int )
RETURNS varchar(10)
AS
BEGIN
DECLARE @string varchar(8);
SET @string = CAST(@value AS varchar(8));
RETURN SUBSTRING(@string, 1,4)
    + '/' + SUBSTRING(@string, 5,2)
    + '/' + SUBSTRING(@string, 7,2);
END
CREATE FUNCTION [dbo].[GetDateFormatForInt] (@nbr int)
RETURNS varchar(10)
AS
BEGIN
RETURN
    LEFT(@nbr,4)+'/'+
    SUBSTRING(CAST(@nbr AS VARCHAR(10)),5,2)+'/'+
    RIGHT(@nbr,2);
END

此函数假定值包含8位数字。如果存在其他限制或条件,则必须修改该函数。

如果不想对该值进行子串,则可以执行以下操作:

DECLARE @nbr INT=13901210
SELECT 
    LEFT(@nbr,4)+'/'+
    SUBSTRING(CAST(@nbr AS VARCHAR(10)),5,2)+'/'+
    RIGHT(@nbr,2)
然后函数将如下所示:

CREATE FUNCTION [dbo].[int_to_slashed_string] ( @value int )
RETURNS varchar(10)
AS
BEGIN
DECLARE @string varchar(8);
SET @string = CAST(@value AS varchar(8));
RETURN SUBSTRING(@string, 1,4)
    + '/' + SUBSTRING(@string, 5,2)
    + '/' + SUBSTRING(@string, 7,2);
END
CREATE FUNCTION [dbo].[GetDateFormatForInt] (@nbr int)
RETURNS varchar(10)
AS
BEGIN
RETURN
    LEFT(@nbr,4)+'/'+
    SUBSTRING(CAST(@nbr AS VARCHAR(10)),5,2)+'/'+
    RIGHT(@nbr,2);
END

这只适用于10位数字的情况这也适用于我:

    CREATE PROCEDURE getdatestr
    @result nvarchar(12) output,
    @info bigint 
    AS
    BEGIN
    SET @result=(SELECT LEFT(CAST(@info AS VARCHAR(8)),4)+'/'+
    SUBSTRING(CAST(@info AS VARCHAR(8)),5,2)+'/'+
    RIGHT(CAST(@info AS VARCHAR(8)),2))
    RETURN @result
    END
    GO

除了左、右返回nvarchar和子字符串返回string:)无论如何尝试一下……它会给出相同的输出,如果您同意,那么它很容易得到。

我想知道为什么没有人建议这个简单的查询

declare @input bigint=13901210

select REPLACE(Convert(varchar,Convert(date,CONVERT(varchar,@input))),'-','/')

这是否取决于文化信息?