mysql postgresql 查询不指定表名和公用文件夹
Posted
技术标签:
【中文标题】mysql postgresql 查询不指定表名和公用文件夹【英文标题】:mysql postgresql query without specifying table name and public folder 【发布时间】:2015-01-20 10:51:24 【问题描述】:我的客户请求从使用 mysql 更改为 PostgreSQL。数据库迁移运行良好,我的代码使用 DevArt dotConnect Universal。除了实际的 SQL 语句之外,一切看起来都不错。
在我使用的 C# 代码中,
"SELECT * FROM users WHERE user_name LIKE '%abc%';"
它可以与 MySQL 一起使用,但是当它连接到 PostgreSQL 时,我必须更改要使用的 SQL 语句,
"SELECT * FROM public.\"users\" WHERE user_name LIKE '%abc%';"
而且搜索到的文字是区分大小写的!
我该怎么做, (a) 使搜索的文本不区分大小写? (b) 避免需要在表名前添加 [public.] 并用双引号括起表名?
我看到有人在这里发布了一些东西,Accessing a table without specifying the schema name 但我有 120 张桌子,这会很耗时。有没有更快的方法来解决我上面描述的 2 个问题?
编辑: 哦,我意识到这两个语句产生了相同的结果。
SELECT * FROM Public.user;
和
SELECT * FROM \"user\";
【问题讨论】:
AFAIK 您不需要指定公共架构。如果表名不是全部小写并且没有空格或其他“有趣”字符,则只需双引号 - 尽管我不知道 dotConnect 是否如此......不区分大小写很容易 - 使用喜欢。 没有必要用public
模式来限定表名(除非你弄乱了默认搜索路径)。如果您创建的表没有引用,您也不需要引用表名。是的,字符比较 is 在 Postgres 中区分大小写
谢谢你们俩。我注意到数据库中有一些东西是由他们以前的程序员完成的。顺便说一句,她使用关键字作为列名,例如“类型”。当然,我可以将其更改为“fruit_type”,但不仅要更改所有 120 个表,还必须更改代码和 Crystal Report。有更快的方法吗?
如果SELECT * FROM Public.user;
有效,那么select * from users
(不带任何引号)也同样有效。您可以使用type
作为表名,而无需在 Postgres 中引用它:sqlfiddle.com/#!15/740cb/1
谢谢你们,我会调查的。希望我能在星期五之前得到一些东西。
【参考方案1】:
(a) 使搜索到的文本不区分大小写?
PostgreSQL 中的 ILIKE 关键字提供不区分大小写的搜索
SELECT * FROM users WHERE user_name <b>ILIKE</b> '%abc%';
或
select * from words where <b>LOWER</b>(word) <b>LIKE</b> '%aba%'
注意:如果您的表名是Users
,则使用SELECT * FROM "Users"
> SQLFIDDLE DEMO
【讨论】:
感谢@WingedPanther 的快速回复。 SQLFiddle Demo 不错,我会用。我还列出了另一个问题,即如何在不使用 Public 关键字的情况下进行选择,以及如何不对表名进行双引号?另外,您是否知道在哪里可以找到 PostreSQL 9.4 和 MySQL 5.6 之间的 SQL 差异列表? 我在 VB.NET 中使用 PostgreSQL 从未使用过Public
关键字我认为你不需要使用它??没有它试过吗??
你是对的。现在它对我有用。反正有一个通用查询语句可以与 postgreSQL、MySQL、MSSQL 一起使用吗? MySQL 使用 ``,postgreSQL 使用 "",MSSQL 没有也可以。
@furor:SQL 标准要求引用标识符的"
。 SQL Server 和 MySQL 都可以配置为符合有关引用标识符的标准。
谢谢你们,我会调查的。希望我能在星期五之前得到一些东西。以上是关于mysql postgresql 查询不指定表名和公用文件夹的主要内容,如果未能解决你的问题,请参考以下文章
mysql存储过程,查询指定数据库具体编码类型含有某字符串的所有表名和列名
使用SQL Server和Mysql查询所有数据库名表名和字段名
MySQL查询数据库里面所有的表名和表注释 - tables with comment