PolarDB PostgreSQL版(兼容Oracle)提供了fn_getpy
和get_pyjm
两个函数,用于将汉字字符串转换为拼音。当您需要根据汉字读音进行搜索、排序或建立索引时,可以使用这两个函数快速获取全拼或拼音首字母,有效解决Oracle原生语法不支持直接获取汉字拼音的问题。
PolarDB内置了两个常用的拼音相关函数,以满足不同的业务场景需求:
fn_getpy
:功能全面的拼音转换函数,支持将汉字转换为全拼(大小写)、首字母大写全拼、拼音首字母(大小写)等多种格式。get_pyjm
:一个简化的快捷函数,专门用于快速获取汉字字符串的拼音首字母(大写格式)。
前提条件
支持的PolarDB PostgreSQL版(兼容Oracle)的版本如下:
Oracle语法兼容 2.0(内核小版本2.0.14.17.35.0及以上)
注意事项
使用拼音相关函数时,请注意其与Oracle原生行为的差异:
多音字场景:Oracle的
fn_getpy
和get_pyjm
函数无法处理多音字,一个汉字固定一个读音。而PolarDB能够处理常见的多音字,其返回结果更符合中文语言习惯。中文与非中文字符混合:当向
fn_getpy
函数传入混合字符串参数时,Oracle会将中文字符转为拼音,同时保留非中文字符。而PolarDB会忽略非中文字符,只返回中文字符的拼音。例如,对于'A中国123'
,函数将返回'zhongguo'
。NULL值处理:当向
get_pyjm
函数传入NULL
参数时,Oracle会返回异常,而PolarDB会返回NULL
,而不会返回异常。
fn_getpy函数
fn_getpy
函数根据您指定的输出格式,将中文字符串转换为相应的拼音。
函数
FUNCTION sys.fn_getpy(
p_str IN VARCHAR2,
p_flag NUMBER DEFAULT NULL
) RETURN VARCHAR2
参数说明
参数 | 描述 |
p_str | 输入的中文字符串。 |
p_flag | 输出的拼音格式。取值范围如下:
说明 如果不指定该参数( |
示例
-- 默认格式(全拼小写)
SELECT fn_getpy('拼音') FROM dual;
-- 返回: pinyin
-- 全拼大写
SELECT fn_getpy('拼音', 1) FROM dual;
-- 返回: PINYIN
-- 全拼,首字母大写
SELECT fn_getpy('拼音', 2) FROM dual;
-- 返回: PinYin
-- 仅首字母,小写
SELECT fn_getpy('拼音', 3) FROM dual;
-- 返回: py
-- 仅首字母,大写
SELECT fn_getpy('拼音', 4) FROM dual;
-- 返回: PY
get_pyjm函数
get_pyjm
函数用于快速获取字符串的拼音首字母(大写),其效果等同于fn_getpy(p_str, 4)
。
函数
FUNCTION sys.get_pyjm(
P_NAME IN VARCHAR2
)
RETURN VARCHAR2
示例
SELECT get_pyjm('拼音') FROM dual;
-- 返回: PY