根据字符串查找整个 PostgreSQL 数据库中的表中的值
时间: 2024-02-20 15:58:59 浏览: 81
要根据字符串在整个 PostgreSQL 数据库中查找表中的值,可以使用类似以下的查询语句:
```
SELECT
table_name,
column_name
FROM
information_schema.columns
WHERE
table_catalog = 'your_database_name' AND
data_type = 'character varying' AND
character_maximum_length IS NOT NULL AND
column_name NOT IN ('password', 'passwd', 'secret')
AND lower(column_name) LIKE '%your_search_string%';
-- 执行上面的查询语句之后,获取到需要查找的表名和列名,然后再执行以下的查询语句:
SELECT
*
FROM
your_table_name
WHERE
lower(your_column_name) LIKE '%your_search_string%';
```
这个查询语句会先获取到需要查找的表名和列名,然后在指定的表中根据指定的列名和搜索字符串进行查询,返回符合条件的所有行。需要注意的是,这个查询语句只会查找字符类型的列,且不会查找包含敏感信息(如密码、秘密等)的列。如果需要查找其他类型的列,需要修改查询语句中的 `data_type` 条件。
相关问题
查找整个 PostgreSQL 数据库中的是否有某个特定字符串
要在整个 PostgreSQL 数据库中查找是否有某个特定字符串,可以使用以下的查询语句:
```
SELECT
relname AS table_name,
attname AS column_name
FROM
pg_attribute
INNER JOIN pg_class ON pg_class.oid = pg_attribute.attrelid
INNER JOIN pg_namespace ON pg_namespace.oid = pg_class.relnamespace
WHERE
pg_attribute.atttypid IN (25,1043) AND
pg_attribute.attnum > 0 AND
pg_namespace.nspname = 'public' AND
pg_class.relkind = 'r' AND
lower(pg_attribute.attname) LIKE '%your_search_string%'
ORDER BY
relname,
attname;
```
这个查询语句会在整个 PostgreSQL 数据库中查找所有包含指定字符串的字符类型列,并返回这些列所在的表名和列名。需要注意的是,这个查询语句只会查找字符类型的列。如果需要查找其他类型的列,需要修改查询语句中的 `pg_attribute.atttypid` 条件。
同时,这个查询语句只会查找 `public` 模式下的表,如果需要查找其他模式下的表,需要修改查询语句中的 `pg_namespace.nspname` 条件。
postgresql数据库 like in怎么实现
`LIKE` 和 `IN` 是 PostgreSQL 数据库中两个不同的操作符,它们用于不同的场景。如果您需要同时使用 `LIKE` 和 `IN`,可以使用以下语法:
```
SELECT * FROM table_name WHERE column_name LIKE ANY (array['%substring1%', '%substring2%', ...]);
```
在这个例子中,`table_name` 是包含要搜索的数据的表的名称,`column_name` 是包含字符串的列的名称,`%substring1%`、`%substring2%` 等是要搜索的子字符串,它们被放在一个数组中,并使用 `ANY` 操作符进行比较。
例如,如果您要查找包含子字符串 "hello" 或 "world" 的所有行,则可以使用以下查询:
```
SELECT * FROM my_table WHERE my_column LIKE ANY (array['%hello%', '%world%']);
```
这将返回包含 "hello" 或 "world" 的任何子字符串的行。注意,这种查询可能会影响性能,特别是在大型表中进行搜索时。因此,如果可能的话,最好使用更具体的过滤条件。
阅读全文