Php

哪些程式語言會在提取名為列名的破折號時遇到問題?

  • April 16, 2017

我有時在 clojure 中工作,這是一種提倡在變數名中使用破折號的語言(我可以說比 Java camelCasing 更具可讀性)。更進一步,我傾向於在一個數據庫實現中使用列名奇偶校驗,以便我的程式碼中的列名與數據庫中的相同。我選擇的數據庫支持這一點。我想知道這將如何影響使用其他語言的開發人員,他們可能必須訪問相同的表:

其他通用語言的開發人員是否必須通過特殊的努力來適應閱讀包含破折號的列名?例如,我曾經聽到 PHP 開發人員圍繞資源名稱中的連字元咆哮。哪些程式語言需要對包含破折號的列名進行額外處理?這些語言需要付出多大的努力?

我沒有使用clojure的經驗,但它看起來與LISP非常相似。不確定哪些語言會遇到麻煩,但每個主要的 DBMS 都會。我用 Mariadb 測試過:

[test]> create table tx (a-b int);
ERROR 1064 (42000): You have an error in your SQL syntax; check the 
manual that corresponds to your MariaDB server version for the right 
syntax to use near '-b int)' at line 1

並使用 DB2:

~]$ db2 "create table tx (a-b int)"
DB21034E  The command was processed as an SQL statement because it was 
not a valid Command Line Processor command.  During SQL processing it 
returned: SQL0104N  An unexpected token "-b int)" was found following 
"create table tx (a".  Expected tokens may include:  "<space>". 
SQLSTATE=42601

我懷疑所有其他 DBMS:s 也會有問題。你可以引用你的方式:

]$ db2 "create table tx (\"a-b\" int)"
DB20000I  The SQL command completed successfully.

但我強烈建議不要這樣做。

我將在 Clojure 中創建一個映射器,將所有 DBMS 對象的“-”轉換為“_”,反之亦然。

引用自:https://dba.stackexchange.com/questions/171114