加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

postgres 字符串操作(拼接/查询位置/删除空白)

(2018-02-28 15:21:17)
分类: SQL
1.字符拼接
   方法:select '北京市' ||'海淀区';
    结果:  北京市海淀区
 
  列与列字符拼接方法:select "所在区县"|| "所在小区" from tablename;
  结果: column_name
      石景山区远洋山水
      西城区依莲轩
      朝阳区王四营
      ……
2.字符串的类型变换
(1)输出ASCII码的字符,方法:select chr(49);
     结果:1
(2)第一个字符的ASCII码,方法:select ascii('1');
     结果:49
(3)大写字母转为小写字母: select lower('HELLO1234');
     结果:hello1234
(4)小写字母转为大写字母:select upper('hello1234');
     结果:HELLO1234
3.字符串添加/删除字符
1)左侧添加字符:
    方法:select lpad('北京市',5,'海淀区')
    结果:海淀北京市
    方法:select lpad('北京市',6,'海淀区');
    输出:海淀区北京市
    方法:select lpad('北京市',6);------如果省略添加的文字,以空格代替,可作为添加空格的方法
    输出:   北京市
(2)右侧添加字符:
    方法:select rpad('北京市',5,'海淀区')
    结果:北京市海淀
    方法:select rpad('北京市',6,'海淀区');
    输出:北京市海淀区
    方法:select rpad('北京市',6);------如果省略添加的文字,以空格代替,可作为添加空格的方法
    输出:北京市   (后边三个空格)
(3)左右侧消除空格:
    方法:select trim('   北京市   ')
    结果:北京市
(4)把string中的任何匹配from中字符的字符转换为to中对应的字符:translate(string text,from text,to text)          
        方法:select translate('北京市海淀县','县','区')
        结果:北京市海淀区

        注意:用to替换跟from匹配的文字市,只能替换匹配字符长度大小的字符,如
        方法:select translate('北京海淀县北京','北京','北京市')
        结果:北京海淀县北京
        方法:  select translate('北京市海淀县北京市','北京市','北京');
     结果:北京海淀县北京
     方法:select translate('北京海淀县丰台','北京丰台','深圳广州')
     结果:深圳海淀县广州
4.字符串抽取
(1)提取字符串中的部字符  
 substr(string,from[int],for[count])/substring(string,from[int],for[count])
 提取中间字符方法:select substr('北京市海淀区',3,3); ---从第三个字符开始,提取后边三个字符。
 输出:市海淀

 提取右侧字符方法:select substr('北京市海淀区',3); ---从第三个字符开始,提取后边字符。
 输出:市海淀

 提取左侧字符方法:select substr('北京市海淀区',1,position('海淀区' in '北京市海淀区')-1); ---从第1个字符   开始,提取海淀区之前的字符。
 输出:北京市
  
(2)提取特定字符的位置:position(string in string)
 方法:select position('海淀区' in '北京市海淀区');
 结果:4


5.其他字符串相关函数
(1)bit_length(string):返回字符串里二进制位的个数,比如select bit_length('hello'),返回40(一个字符8位);select bit_length('北京市'),返回72(一个汉字1个字符3个字节);

(2)char_length(string):返回字符串中字符个数,select char_length('北京市'),返回3;

(3)convert(string using conversion_code_name):改变字符编码,selec convert('abcdefg','iso_8859_1','utf8');

(4)octet_length(string):返回字符串字节数select octet_length('北京市'),返回9;

(5)overlay(string placing string from int for int ):替换字符串,select overlay('北京市丰台区' placing '海淀区' from 4 for 3 );返回北京市海淀区;

(6)btrim(string1,string2):从string1开头和结尾删除只包含在string2里的字符的最长字符。
select btrim('xyxtrimyyx','xy'),返回trim 开头xyx是位于xy中的,结尾xyy是位于xy中的,都删除;
select btrim('xyxtrimyyx','x'),返回yxtrimyy 开头x是位于x中的,第二位的y不在,删除x结束,结尾也是删除x以后结束删除
select btrim('xyxtrimyyx','y'),返回xyxtrimyyx。

(7)replace(string,from,to),把字符string里出现的所有子字符串from替换为子字符串to
select replace('北京市海淀区', '海淀', '丰台'); 返回北京市丰台区;--跟overlay的使用目的类似;

(8)repeat(string,int):重复string int 次。select repeat('北京',4);返回:北京北京北京北京

(9)strpos(string,string):子字符串的位置 strpos('北京市','市'); 返回3

(10)to_hex(int/bigint):把number转换成其对应的十六进制表现形式。select to_hex(125); 返回7d

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有