sql中的整数到字符串转换函数
我的电话号码如下: 13901210 我希望输出给出以下结果 1390/12/10 输入函数:多个bigint 输出:一个字符串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) 只需将值替换为
如何创建此函数?您可以尝试以下查询:
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))),'-','/')
这是否取决于文化信息?