日期和数字类型的模糊查询
sql server : select * from table where modifytime like '%2022%'
与sql server不同,pgSql需要先把日期格式转化为char
select * from table where ( to_char(modifytime, 'yyyy-mm-dd hh:mi:ss') like '%2022%')
--数字类型
select * from [表名] where cast([字段名] as char) like '%12%'
select * from newploay where cast(number as char) like '%12%'
--时间类型
select * from [表名] where (TO_CHAR([字段名], 'yyyy-mm-dd hh:mm:ss') LIKE '%2023%')
select * from newploay where (TO_CHAR(no3, 'yyyy-mm-dd hh:mm:ss') LIKE '%2023%')
limit、offset
sqlserver使用top选择查询行数
pgsql用limit
offset:过滤纪录
从第5个开始查询(过滤4条),查询6条记录
select * from table offset 4 limit 6
limit和offset都可以单独使用,一般都是搭配order by 排序使用
distinct 去重
select distinct name from table
模式
表的集合,将表组织成逻辑组,便于管理
创建模式
CREATE SCHEMA schema;
在模式中创建表
CREATE TABLE schema.table;
查看数据库下面所有的schema
select * from information_schema.schemata;
查看一个schema下面所有的表
select * from information_schema.tables where table_schema = ‘schema’;
PostgreSQL查询表名称及表结构
查询表名
SELECT tablename FROM pg_tables;
SELECT viewname FROM pg_views;
获取数据库中所有view名 视图
SELECT viewname FROM pg_views WHERE schemaname = 'public' ;
查询表结构
SELECT
A.attnum,
A.attname AS field,
T.typname AS TYPE,
A.attlen AS LENGTH,
A.atttypmod AS lengthvar,
A.attnotnull AS NOTNULL,
b.description AS COMMENT
FROM
pg_class C,
pg_attribute A
LEFT OUTER JOIN pg_description b ON A.attrelid = b.objoid
AND A.attnum = b.objsubid,
pg_type T
WHERE
C.relname = 'pg_class'
AND A.attnum > 0
AND A.attrelid = C.oid
AND A.atttypid = T.oid
ORDER BY
A.attnum;
字符串拼接
sql : select 'qwe' + 'asd' --结果: qweasd
pgsql: select 'qwe' || 'asd' --结果: qweasd
sql : select '22' + 22 --结果: 44
pgsql: select '22' || 22 --结果: 2222
sql : select 'q22' + 22 --结果: 报错
pgsql: select 'q22' || 22 --结果: q2222
sql : select 22 + 22 --结果: 44
pgsql: select 22 || 22 --结果: 报错
pgsql: select 22 + 22 --结果: 44
由以上结果可知,sqlserver中,字符串拼接或者数字计算都用 “+” ,如果字符串和数字用+,字符串可以转换为数字类型就可以直接计算,如果不能转换就会报错。
pgsql中,只要拼接的一方是字符串类型的,使用"||"就可以拼接成功,不会计算,如果||两侧都是数字类型,使用||就会报错,要计算必须用+,|| 只用于拼接字符串,不做其他操作。