pgsql常用函数

本文介绍了多种SQL技巧,包括字符串拼接、条件判断、行号添加、类型转换等操作,并通过具体示例展示了如何使用这些技巧来高效处理数据。

拼接两个字符串

concat_ws(‘_’,a.emp_code,a.emp_name)

case when

(case when a.status =’1’
then ‘在职’
else ‘离职’
end )as status ,

加上行号

(row_number() OVER (ORDER BY a.emp_first_dept_code)+ 30000) as rownums

int转text

a.emp_first_dept_code::text::int 
a.emp_dept_info_id ::int::text  

转化时间成字符串

to_char(a.exam_start_time,'yyyyMM')

时间转化为 24 小时 字符串

 to_char(a.ptc_date,'yyyy-MM-dd hh24:MI:ss')

判断符

  COALESCE (a.store_used_bonus,0)  as storeusedbonus, -- 为null ,则0,否则为自己

列转行

string_agg(a.empname,’,’) as empname

### PostgreSQL 字符串拼接函数 PostgreSQL 提供了多种用于字符串拼接的函数和操作符,能够灵活地处理字符串连接操作。最常用的方式是使用 `||` 操作符,它支持多个字符串或列的连接[^1]。 #### 使用 `||` 操作符进行拼接 `||` 是 PostgreSQL 中最直观的字符串拼接操作符,可以用于连接两个或多个字符串值。例如: ```sql SELECT 'Hello' || ' ' || 'World'; -- 输出 "Hello World" ``` 该操作符也支持与列的拼接,例如将表中的多个字段合并为一个字符串: ```sql SELECT first_name || ' ' || last_name AS full_name FROM users; ``` 此查询将 `users` 表中的 `first_name` 和 `last_name` 字段拼接为完整姓名。 #### 使用 `CONCAT` 函数 除了 `||` 操作符,PostgreSQL 还提供了 `CONCAT` 函数用于拼接字符串。该函数支持多个参数,并自动忽略 `NULL` 值: ```sql SELECT CONCAT('PostgreSQL', ' ', '字符串拼接'); -- 输出 "PostgreSQL 字符串拼接" ``` 与 `||` 不同的是,`CONCAT` 函数在参数之间不会自动添加空格或其他分隔符,因此需要显式指定。 #### 使用 `CONCAT_WS` 函数 如果需要在拼接字符串时使用统一的分隔符,可以使用 `CONCAT_WS` 函数(“With Separator”的缩写)。该函数的第一个参数为分隔符,后续参数为需要拼接的内容: ```sql SELECT CONCAT_WS(', ', 'Apple', 'Banana', 'Cherry'); -- 输出 "Apple, Banana, Cherry" ``` 此函数在生成列表或 CSV 格式数据时非常有用。 ### 示例代码 以下是一个综合示例,展示如何在实际查询中使用这些拼接方式: ```sql -- 使用 || 拼接 SELECT 'Name: ' || name || ', Age: ' || age AS info FROM users; -- 使用 CONCAT 拼接 SELECT CONCAT('Name: ', name, ', Age: ', age) AS info FROM users; -- 使用 CONCAT_WS 拼接 SELECT CONCAT_WS(' - ', name, email, age::text) AS contact_info FROM users; ``` 在这些示例中,`||`、`CONCAT` 和 `CONCAT_WS` 分别展示了不同的拼接方式,适用于不同的业务需求。 ### 注意事项 - `||` 操作符在拼接过程中如果遇到 `NULL` 值,会直接忽略该部分,不进行替换。 - `CONCAT` 函数同样忽略 `NULL` 参数,但不会自动添加分隔符。 - `CONCAT_WS` 函数在使用时需要注意,如果所有参数均为 `NULL`,则返回空字符串。 通过这些方法,可以在 PostgreSQL 中高效地实现字符串拼接操作,满足多样化的数据处理需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值