现在的位置: 首页 > 综合 > 正文

SQL SERVER 字符串处理函数

2011年09月27日 ⁄ 综合 ⁄ 共 2000字 ⁄ 字号 评论关闭
字符串日期格式化函数
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
GO
 
 
CHARINDEX ( 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')
            GO
LEFT ( character_expression , integer_expression )
RIGHT ( character_expression , integer_expression )
 
REPLICATE ( character_expression ,integer_expression ) 以指定的次数重复字符表达式
 
SUBSTRING ( expression ,start , length )
 
LEN ( string_expression )
REVERSE ( character_expression )

抱歉!评论已关闭.