zoukankan      html  css  js  c++  java
  • POSTGRESQL获得汉字首字拼音函数(转)

    CREATE FUNCTION func_chinese_spell(str VARCHAR(2000)) RETURNS VARCHAR(2000) AS $$
    DECLARE
    word NCHAR(1);
    code VARCHAR(2000);
    i INTEGER;
    chnstr VARCHAR(2000);
    BEGIN
    code := '';
    i := 1;
    chnstr := str;
    WHILE LENGTH(chnstr)>0 LOOP
    word := SUBSTRING(str,i,1);
    code := code || CASE WHEN (ASCII(word) BETWEEN 19968 AND 19968+20901) THEN
    (
    SELECT p FROM
    (
    SELECT 'A' as p,N'驁' as w
    UNION ALL SELECT 'B',N'簿'
    UNION ALL SELECT 'C',N'錯'
    UNION ALL SELECT 'D',N'鵽'
    UNION ALL SELECT 'E',N'樲'
    UNION ALL SELECT 'F',N'鰒'
    UNION ALL SELECT 'G',N'腂'
    UNION ALL SELECT 'H',N'夻'
    UNION ALL SELECT 'J',N'攈'
    UNION ALL SELECT 'K',N'穒'
    UNION ALL SELECT 'L',N'鱳'
    UNION ALL SELECT 'M',N'旀'
    UNION ALL SELECT 'N',N'桛'
    UNION ALL SELECT 'O',N'漚'
    UNION ALL SELECT 'P',N'曝'
    UNION ALL SELECT 'Q',N'囕'
    UNION ALL SELECT 'R',N'鶸'
    UNION ALL SELECT 'S',N'蜶'
    UNION ALL SELECT 'T',N'籜'
    UNION ALL SELECT 'W',N'鶩'
    UNION ALL SELECT 'X',N'鑂'
    UNION ALL SELECT 'Y',N'韻'
    UNION ALL SELECT 'Z',N'咗'
    ) T
    WHERE w>=word ORDER BY p ASC LIMIT 1
    )
    ELSE word END;
    i := i + 1;
    chnstr := SUBSTRING(str,i,LENGTH(str)-i + 1);
    END LOOP;

    RETURN code;
    END;
    $$LANGUAGE plpgsql;

  • 相关阅读:
    ES6变量的解构赋值
    ES6新增内容
    Rvalue references
    range-based for statement
    Space in Template Expression, nullptr, and auto
    Type Alias、noexcept、override、final
    Variadic Template
    =default =delete
    为什么不要特化函数模版?
    boost::noncopyable 的作用
  • 原文地址:https://www.cnblogs.com/wangbin/p/1417503.html
Copyright © 2011-2022 走看看