A C*_*ang 11 postgresql syntax
我将数据库从 SQL Server 迁移到 PostgreSQL。
大多数列名包含双字,例如:
SELECT [Column Name] FROM table;
Run Code Online (Sandbox Code Playgroud)
...这在 PostgreSQL 中不起作用。
PostgreSQL 的正确语法是什么?
Joi*_*dio 25
在大多数 RDBMS 中,双引号用于指定某些内容的确切拼写..(单引号是字符串分隔符)。
SELECT
tab."This IS My Column EXACTLY" AS col
FROM "My TabLE Name Contains Spaces Too!" tab
WHERE tab."ANOTHER UGLY COLUMN name" = 'MyFilterString';
Run Code Online (Sandbox Code Playgroud)
请注意,大写/小写在使用双引号时也很重要。(当不使用双引号时,Postgres 将所有内容都小写……Oracle 大写,等等。)
SELECT COLUMN1 FROM TABLE
Run Code Online (Sandbox Code Playgroud)
在 postgres 中,不同于
SELECT "COLUMN1" FROM TABLE
Run Code Online (Sandbox Code Playgroud)
在 oracle 中,不同于
SELECT "column1" FROM TABLE
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅文章如何在旧数据库中采用 PostgreSQL 命名约定?
在 PostgreSQL 中,按照惯例并且有充分的理由,我们在标识符(列、表、模式等)中既不使用空格也不使用大写字母。虽然使用_纯粹是风格。
SELECT FORMAT(
'ALTER TABLE %I.%I.%I RENAME %I to %I;',
table_catalog,
table_schema,
table_name,
column_name,
lower(
-- replace all spaces with _, xX and Xx becomes x_x
regexp_replace(
-- First, replace spaces with an _
replace(column_name, ' ', '_'),
'([[:lower:]])([[:upper:]])',
'\1_\2',
'xg'
)
)
)
FROM information_schema.columns
WHERE column_name ~ ' |[[:lower:]][[:upper:]]';
Run Code Online (Sandbox Code Playgroud)
从那里你可以编辑要运行的命令,删除你不想要的命令,或者运行\gexec,所有的问题都会消失。
| 归档时间: |
|
| 查看次数: |
43362 次 |
| 最近记录: |