标签归档:字符串

mssql sqlserver 字符串末尾或开始部分包含空格的比较方法分享


摘要:
下文讲述当字符串开始或结尾部分包含空格的对比方法,如下所示:
实验环境:sql server 2008 R2


在一次字符串的对比操作中,我在字符串末尾输入了一个空格,但是在做if判断时,竟然说两个字符串是一样,
下文将通过举例的方式,讲述对字符串中开始和结尾存在空格的对比方法,如下所示:

 DECLARE @maomao365A VARCHAR(30)= 'sqlserver'
DECLARE @maomao365B VARCHAR(30)= 'sqlserver ' ---在变量值后面加入了一个空格

IF ( @maomao365A = @maomao365B ) 
    PRINT N'变量相等1'
ELSE 
    PRINT N'变量相等2'

IF (@maomao365A+'T' = @maomao365B+'T' ) 
    PRINT N'变量相等3'
ELSE 
    PRINT N'变量相等4'
--------输出结果-------
变量相等1
变量相等4

从上面的运行结果,我们可以得出,
当前后存在空格的时候,我们进行字符串的对比时,开头和结尾的空格会被自动剔除,然后再进行比较
所以当字符串中可能包含空格时,我们应该对字符串前后都加上某一字符后,然后对组合后的新字符串进行对比。

mssql sqlserver 将字符串分解为单个字符的方法分享


摘要:
下文讲述使用sql脚本将字符串拆分为单个字符的方法分享,如下所示:
实验环境:sql server 2008 R2



实现思路:
将整个字符串,采用substring分解为一个一个字符,然后存储至数据表中,返回的数据表则会单个字符

  
//函数功能:拆分字符串为单个字符,放入数据表中,并返回
CREATE FUNCTION [dbo].[fn_SplitStringToCharReturnTable]
(
    @str  NVARCHAR(MAX)
)
RETURNS @tmp TABLE
(
    [t] [nvarchar](2) NULL
)
AS
BEGIN    
    DECLARE @p INT = 1, @strLen INT = LEN(@str)
    WHILE @p <= @strLen
    BEGIN
       INSERT INTO @tmp VALUES(SUBSTRING(@str, @p, 1))
        SET @p = @p + 1
    END
    RETURN
END
GO
-----例:
  select [dbo].[fn_SplitStringToCharReturnTable]('maomao365');