在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
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','.','')) 以上为个人经验,希望能给大家一个参考,也希望大家多多支持极客世界。如有错误或未考虑完全的地方,望不吝赐教。 |
请发表评论