zoukankan      html  css  js  c++  java
  • qlserver排序规则在全角与半角处理中的应用

    --1.查询区分全角与半角字符
    --测试数据
    DECLARE @t TABLE(col varchar(10))
    INSERT @t SELECT 'aa'
    UNION ALL SELECT 'Aa'
    UNION ALL SELECT 'AA'   --全角A
    UNION ALL SELECT 'A,A'  --全角A,半角逗号(,)
    UNION ALL SELECT 'A,A' --全角A,全角逗号(,)

    --1.查大写字母
    SELECT * FROM @t
    WHERE col COLLATE Chinese_PRC_CS_AS_WS like '%A%'

    --结果
    Aa

    --2.查全角字母
    SELECT * FROM @t
    WHERE col COLLATE Chinese_PRC_CS_AS_WS like '%A%'

    --结果
    AA
    A,A
    A,A

    --3.查半角逗号(,)
    SELECT * FROM @t
    WHERE col COLLATE Chinese_PRC_CS_AS_WS like '%,%'

    --结果
    A,A

    --3.查全角逗号(,)
    SELECT * FROM @t
    WHERE col COLLATE Chinese_PRC_CS_AS_WS like '%,%'
    GO

    --结果
    A,A


    --2 实现全角与半角字符转换的处理函数
    CREATE FUNCTION f_Convert(
    @str NVARCHAR(4000), --要转换的字符串
    @flag bit              --转换标志,0转换成半角,1转换成全角
    )RETURNS nvarchar(4000)
    AS
    BEGIN
     DECLARE @pat nvarchar(8),@step int,@i int,@spc int
     IF @flag=0
      SELECT @pat=N'%[!-~]%',@step=-65248,
       @str=REPLACE(@str,N' ',N' ')
     ELSE
      SELECT @pat=N'%[!-~]%',@step=65248,
       @str=REPLACE(@str,N' ',N' ')
     SET @i=PATINDEX(@pat COLLATE LATIN1_GENERAL_BIN,@str)
     WHILE @i>0
      SELECT @str=REPLACE(@str,
        SUBSTRING(@str,@i,1),
        NCHAR(UNICODE(SUBSTRING(@str,@i,1))+@step))
       ,@i=PATINDEX(@pat COLLATE LATIN1_GENERAL_BIN,@str)
     RETURN(@str)
    END
    GO

    SELECT [dbo].[f_Convert] ('AAA' ,0)

    --结果
    AAA

  • 相关阅读:
    sql server 操作文件
    sql server T-sql查询执行顺序
    js 时间相关函数
    js页面 :函数名 is not defined
    C# 通过文件路径获取文件名
    WRAR下载及注册
    Java 中xml解析
    string 与 byte[] 互转时的注意事项
    Spring MVC表单标签
    java 中基本类型与字符串之间的互相转换
  • 原文地址:https://www.cnblogs.com/accumulater/p/6145396.html
Copyright © 2011-2022 走看看