字符串日期格式化函数
create function fn_DateToString(@date datetime, @format varchar(20))
returns varchar(20)
as
begin
declare @result varchar(20)
select @result = (replace(replace(replace(@format,'yyyy','20'+substring(convert(char(8),@date,3),7,2)),'MM',substring(convert(char(8),@date,3),4,2)),'dd',substring(convert(char(8),@date,3),1,2)))
return @result
end
select dbo.fn_datetostring(getdate(),'yyyy-MM-dd')
create function fn_DateToString(@date datetime, @format varchar(20))
returns varchar(20)
as
begin
declare @result varchar(20)
select @result = (replace(replace(replace(@format,'yyyy','20'+substring(convert(char(8),@date,3),7,2)),'MM',substring(convert(char(8),@date,3),4,2)),'dd',substring(convert(char(8),@date,3),1,2)))
return @result
end
使用:
select dbo.fn_datetostring(getdate(),'yyyy-MM-dd')
或者使用 Covert(varchar(20),getdate(),120)
DATALENGTH ( expression )返回用于表示任何表达式的字节数。
SET TEXTSIZE 0 SET NOCOUNT ON -- Create the variables for the current character string position -- and for the character string. DECLARE @position int, @string char(15) -- Initialize the variables. SET @position = 1 SET @string = 'Du monde entier' WHILE @position <= DATALENGTH(@string) BEGIN SELECT ASCII(SUBSTRING(@string, @position, 1)), CHAR(ASCII(SUBSTRING(@string, @position, 1))) SET @position = @position + 1 END SET NOCOUNT OFF GOCHARINDEX ( expression1 ,expression2 [ , start_location ] )如果 expression1 或 expression2 之一是 Unicode 数据类型(nvarchar 或 nchar)而另一个不是,则将另一个转换为 Unicode 数据类型。CHARINDEX 不能与 text、ntext 和 image 数据类型一起使用。
如果 expression1 或 expression2 之一为 NULL,并且数据库兼容级别为 70 或更高,则 CHARINDEX 将返回 NULL。如果数据库兼容级别为 65 或更低,则 CHARINDEX 将仅在 expression1 和 expression2 都为 NULL 时才返回 NULL 值。
如果在 expression1 内找不到 expression2,则 CHARINDEX 返回 0。
REPLACE ( 'string_expression1' , 'string_expression2' , 'string_expression3' )SELECT REPLACE('abcdefghicde','cde','xxx'); 结果 abxxxfghixxx比较英文相似性USE AdventureWorks; GO -- Returns a DIFFERENCE value of 4, the least possible difference. SELECT SOUNDEX('Green'), SOUNDEX('Greene'), DIFFERENCE('Green','Greene'); GO -- Returns a DIFFERENCE value of 0, the highest possible difference. SELECT SOUNDEX('Blotchet-Halls'), SOUNDEX('Greene'), DIFFERENCE('Blotchet-Halls', 'Greene'); GO以下示例在第一个字符串
abcdef
中删除从第2
个位置(字符b
)开始的三个字符,然后在删除的起始位置插入第二个字符串,从而创建并返回一个字符串。
复制代码 SELECT STUFF('abcdef', 2, 3, 'ijklmn') GOLEFT ( character_expression , integer_expression )RIGHT ( character_expression , integer_expression )REPLICATE ( character_expression ,integer_expression ) 以指定的次数重复字符表达式SUBSTRING ( expression ,start , length )LEN ( string_expression )REVERSE ( character_expression )