使用sql連線字串的巧妙方法

結構化查詢語言(SQL)是一個非常強大的工具,它包含了很多特性。今天我們將向您展示有關SQL連線字串的所有需要了解的內容。...

結構化查詢語言(SQL)是一個非常強大的工具,它包含了很多特性。一旦您掌握了最重要的SQL命令,您就可以開始對SQL有更多的創造性了。今天我將向您展示有關SQL連接字符串的所有需要了解的內容。

sql-concatenation

有許多不同的SQL方言。對於所有這些示例,我使用的是PostgreSQL變體。

什麼是串聯(concatenation)?

連接意味著把兩個東西連接在一起。您可能在編程語言中使用它將兩個字符串連接在一起。也許您有一個名字和姓氏變量,作為全名變量連接在一起。

串聯是將兩個字符串組合成一個字符串的非常有用的方法。PHP使用句號將字符串連接在一起,而JavaScript和jQuery使用加號。

SQL中的串聯工作原理完全相同。你用一個特殊的運算符把兩件事合併成一件事。下面是一個偽代碼示例:

first_name = Joelast_name = Coburnwhole_name = first_name + last_name

在編程語言中,串聯使代碼更易於閱讀。如果您的代碼總是需要訪問兩個字符串,那麼將它們組合成一個字符串可以更容易記住,並減少代碼的長度。

雖然SQL中的變量不太常見(但仍在使用),但仍然需要連接來返回組合結果或操作數據。

如何連接

連接在SQL中非常容易。雖然SQL是一種公共語言,但各個數據庫引擎以不同的方式實現特性。雖然所有這些示例都是用PostgreSQL方言編寫的,但只要在web上搜索“Concatenate<YOUR\DATABASE\u ENGINE>”就可以很容易地翻譯成其他變體。不同的引擎可能有不同的語法來進行連接,但原理是一樣的。

回到我們的name示例,下面是一個基本的select查詢:

SELECT first_name, last_name, email FROM users_table

sql select

這裡沒有什麼複雜的東西,所以讓我們加入串聯:

SELECT first_name || last_name AS full_name, email FROM users_table

sql basic concatenation

正如您所看到的,這種連接工作得很好,但是有一個小問題。結果的全名已經完全按照兩列的乘積縫合在一起——名稱之間應該有一個空格!

幸運的是,它很容易修復:只需在兩者之間的一個空間進行連接:

SELECT first_name || ' ' || last_name AS full_name, email FROM users_table

sql concatenation space

這些都是基本的例子,但是你應該看看串聯是如何工作的——真的很簡單!管道運算符(|)在子句之間使用了兩次。您的SQL引擎知道,此符號前後的每個部分都應該連接在一起並視為一個。但是要小心,如果您使用concat運算符但不連接任何內容,您將得到一個錯誤。

sql error

如上所述,這些示例使用SQL的PostgreSQL變體。其他變體可能使用不同的運算符,甚至需要調用的特殊函數。如果以數據庫引擎所期望的方式連接字符串,那麼如何連接字符串實際上並不重要。

深入

既然您已經瞭解了基礎知識,那麼讓我們來看看一些深入的示例,以及一些常見的陷阱。

大多數數據庫引擎將成功地合併字符串和整數,甚至日期。在嘗試連接複雜類型(如數組)時,通常會遇到問題:

SELECT first_name || ' ' || last_name || ARRAY[123, 456] AS full_name, email FROM users_table

此代碼將不起作用。無法將字符串與數組等複雜對象組合。如果你考慮你需要做什麼,你通常可以寫簡單的代碼,而不是複雜的,瘋狂的代碼無法運行。

如果您已經仔細考慮了需要做什麼,但仍然無法讓SQL正常工作,那麼您是否考慮過使用編程語言?作為一個處理遺留代碼的軟件開發人員,我知道調試SQL的痛苦,因為有人在SQL中塞進了太多的邏輯,這是一個奇蹟——如果你試圖用SQL編寫邏輯,那麼就改用編程語言(有很多容易學的語言)。

串聯對於where語句也非常有效:

SELECT first_name, last_name, email FROM users_table WHERE date_of_birth = ('DAY' || '/' || 'MONTH' || '/' || 'YEAR')::date

這裡發生了一些事情。在本例中,DAY、MONTH和YEAR是從腳本傳入的參數。可能是代碼生成的,或者是用戶輸入的。它們連接在一起,然後轉換為日期類型(使用PostgreSQL轉換為日期語法::date)。

通過這種方式使用串聯,可以將日期的各個部分鏈接在一起,然後可以將其作為“真實”日期處理,而不是字符串。不要忘記,這個基本示例並不能防止SQL注入,所以不要在沒有修改的情況下在任何生產代碼中使用它。

另一個要注意的陷阱是空值(空字符串是空的或不存在的字符串)。給出這個問題:

SELECT first_name || ' ' || NULL AS full_name, email FROM users_table

sql null concatenation

此查詢以靜默方式失敗。這是由於連接是在數據庫引擎上進行內部編碼的方式造成的。你可能不會經常遇到這個問題,但這是很常見的事情。

如果您認為查詢返回的數據可能為空,則需要使用coalesce。Coalesce大致可以被認為是“如果它為null,則用另一個字符串或列替換它”:

SELECT first_name || ' ' || COALESCE(NULL, 'ERROR NULL DATA') AS full_name, email FROM users_table

sql concatenation coalesce

現在您知道如何在SQL中使用連接,您將如何處理它?你會建立一個網站,並用SQL使之活躍起來嗎?或者你可能需要一個靜態站點生成器來更簡單地構建網站。

無論你做什麼,請在下面的評論中告訴我們!

  • 發表於 2021-03-13 07:05
  • 閱讀 ( 48 )
  • 分類:程式設計

你可能感興趣的文章

字串緩衝區(string stringbuffer)和java中的stringbuilder(stringbuilder in java)的區別

...fer和stringbuilder是Java中的類。字串在Java程式設計中被廣泛使用。一旦建立了字串物件,就不可能更改它們。每次字串發生更改時,它都會建立一個新字串。即使是連線到現有字串,它也會建立一個新字串。這會導致記憶體浪費。...

  • 發佈於 2020-10-02 19:22
  • 閲讀 ( 45 )

自上而下(top down)和自下而上分析(bottom up parsing)的區別

...下和自底向上解析的另一個重要區別是,自頂向下的解析使用最左邊的派生,而自下而上的解析使用最右邊的派生。 高階語言有助於編寫計算機程式。程式設計師更容易理解它們,但計算機不容易理解。因此,將程式轉換為高...

  • 發佈於 2020-10-18 09:45
  • 閲讀 ( 53 )

掃描(scanf)和得到(gets)的區別

...編寫所有語句,它可以被分成多個函式。在程式設計中,使用者可以定義自己的函式。程式語言也提供了一些函式。C語言提供了許多函式,因此程式設計師可以直接使用它們而不必從一開始就實現它們。C語言提供的兩個這樣的...

  • 發佈於 2020-10-19 23:18
  • 閲讀 ( 46 )

學習python?下面是如何操作字串

使用Python可以透過多種方式操縱字串。Python提供了各種函式、運算子和方法,可以用來操作字串。您可以分割一個字串,連線兩個或多個字串,在字串中**變數,等等。 ...

  • 發佈於 2021-03-11 10:21
  • 閲讀 ( 58 )

如何在windows上安裝mysql資料庫

... 使用大多數應用程式連線到資料庫通常只涉及一個特定的連線字串,因此使用一個數據庫伺服器測試應用程式,然後將其切換到“生產”伺服器非常簡單。 ...

  • 發佈於 2021-03-11 21:33
  • 閲讀 ( 51 )

所有程式設計師都應該知道的13條最重要的sql命令

...庫驅動著現代網路。每個大的或動態的網站都以某種方式使用資料庫,當與結構化查詢語言(SQL)結合使用時,操縱資料的可能性真的是無窮無盡。如果您已經知道SQL,請確保您檢查了所有網站開發人員都應該知道的程式設計技...

  • 發佈於 2021-03-14 06:57
  • 閲讀 ( 43 )

幫助您快速學習的10個基本python示例

...更快的方法來操作字串,從而產生更可讀的程式碼。首選使用format()方法: ...

  • 發佈於 2021-03-16 13:29
  • 閲讀 ( 47 )

安全測試防病毒軟體的5種方法

...這就像在戰場上測試防彈衣一樣。有安全和良性的方式,使用者可以測試他們的防病毒軟體,他們可以使用這些軟體來看看他們的安全是不是最新的速度。 ...

  • 發佈於 2021-03-20 09:49
  • 閲讀 ( 56 )

3個瘋狂的excel公式,做了驚人的事情

... 我們已經介紹了一些更好地使用Excel的不同方法,例如使用Excel建立自己的日曆模板或將其用作專案管理工具。 ...

  • 發佈於 2021-03-22 19:09
  • 閲讀 ( 52 )

如何使用這9個函式在php中操作文字

...是一個函式。事實上,echo是一種語言構造,因此即使您使用它比任何真正的字串函式都多,也不能總是使用它來代替函式。 ...

  • 發佈於 2021-03-27 01:14
  • 閲讀 ( 47 )
efbgbb04
efbgbb04

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦