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

    --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%'

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

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

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


    /*=============================================*/


    --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
  • 相关阅读:
    google-glog 开源库分析(一):glog介绍
    homebrew用法
    macos新手入门
    markdown语法_文本效果[转载]
    markdown语法[转载]
    从Search Sort到Join
    实际例子描述和分析“猎豹抢票跨站推荐功能有票刷不到”的疑似bug
    最简单例子图解JVM内存分配和回收
    B树在数据库索引中的应用剖析
    从Count看Oracle执行计划的选择
  • 原文地址:https://www.cnblogs.com/shihao/p/2542246.html
Copyright © 2011-2022 走看看