热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

pg中replace和translate的用法说明(数据少的中文排序)

这篇文章主要介绍了pg中replace和translate的用法说明(数据少的中文排序),具有很好的参考价值,希望对大家有所帮助。一

1.首先创建students表

CREATE TABLE students
(
 id integer NOT NULL,
 name character varying(255),
 sex character varying(255),
 class character varying(255),
 "like" character varying(255),
 school character varying(255),
 phone character varying(255)
)

2.插入数据

INSERT INTO "public"."students" ("id", "name", "sex", "class", "like", "school", "phone") 
VALUES ("1", "大猫", "女", "一年级", "绘画", "第三小学", "2345");
INSERT INTO "public"."students" ("id", "name", "sex", "class", "like", "school", "phone") 
VALUES ("2", "小厌", "男", "三年级", "书法", "第四小学", "2346");
INSERT INTO "public"."students" ("id", "name", "sex", "class", "like", "school", "phone") 
VALUES ("3", "库库", "女", "二年级", "绘画", "第三小学", "2342");
INSERT INTO "public"."students" ("id", "name", "sex", "class", "like", "school", "phone") 
VALUES ("4", "艾琳", "女", "四年级", "书法,钢琴", "第四小学", "2349");

结果:

select * from students

如下图:

3.replace 的用法

replace(string text, from text, to text)

返回类型:text

解释:把字串string里出现地所有子字串from替换成子字串to

示例1:

select replace("一条黑色的狗","黑","黑白相间")

结果:一条黑色的狗 变成了 一条黑白相间色的狗

如下图:

示例2:

update students set name=replace(name,"大猫","小猫咪的姐姐")

结果:name为 ‘大猫"的这条数据name="小猫咪的姐姐"

示例3:

select * from students where school="第四小学" ORDER BY replace(name,"艾琳","1")

结果:

4.translate的用法

translate(string text, from text, to text)

返回类型:text

解释:把在string中包含的任何匹配from中的字符的字符转化为对应的在to中的字符。

示例1:

select translate("她真是好看", "好看","漂亮")

结果:

示例2:

select * from students where phone like "2%" 
ORDER BY translate(class, "一二三四","1234")

结果:

示例3:

select * from students where phone like "2%" 
ORDER BY translate(name, "库小厌猫咪艾","1234")

结果

结论:

有了translate再也不担心中文排序问题了(数据比较少的情况)

补充:pg中position、split_part、translate、strpos、length函数

我就废话不多说了,大家还是直接看代码吧~

select position("." in "1.1.2.10");
select split_part("1.1.2.10",".",length("1.1.2.10") - length(translate("1.1.2.10",".",""))+1);
select split_part("1.1.2",".",length("1.1.2") - length(translate("1.1.2",".",""))+1);
select length(translate("1.1.2.10",".","a"))+1 as num
select translate("1.1.2.10",".","")
select strpos("1.1.2.10",".")
select instr("1.1.2.10",".",1,3) 
select length("1.1.2.10") - length(translate("1.1.2.10",".",""))

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程笔记。如有错误或未考虑完全的地方,望不吝赐教。


推荐阅读
author-avatar
游山玩水人生
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有