數據庫中字符串相加需要換行

數據庫中字符串相加需要換行,這個需求在現在項目中很常見,特別是備注內容的追加,因此把Oracle/SQLServer/MySQL這幾種數據庫的使用進行簡單的總結一下

1、本文內容

  • Oracle中實現字符串相加需要換行
  • SQLServer中實現字符串相加需要換行
  • MySQL中實現字符串相加需要換行

2、Oracle中實現字符串相加且換行

在 Oracle 數據庫中,當你想要將多個字符串相加并希望它們之間包含換行符時,你可以使用字符串連接操作符 || 并結合 Oracle 的字符轉義序列或者 CHR 函數來實現換行。

Oracle 中沒有直接的轉義序列來表示換行,但你可以使用 CHR(10) 來表示換行符(在 ASCII 中,換行符的編碼是 10)。

2.1、示例使用 CHR(10)和符串連接操作符 ||

使用字符串連接操作符 || 和 換行符 CHR(10)

SYS@orcl>col msg_string format a40
SYS@orcl>SELECT 'First line     第一行' || CHR(10) || 'Second line      第二行' AS msg_string FROM dual;MSG_STRING
----------------------------------------
First line      第一行
Second line     第二行

2.2、示例使用 CHR(10)和 CONCAT函數

2.2.1、Oracle中的CONCAT函數

Oracle中的CONCAT函數主要用于連接兩個或多個字符串。以下是對Oracle CONCAT函數的詳細解釋:

  1. 函數定義:

    • CONCAT函數是Oracle數據庫中用于連接兩個字符串的內置函數。
    • 它接受兩個字符串參數,并返回一個新的字符串,該字符串是這兩個參數值的連接結果。
  2. 語法格式:

    • CONCAT(string1, string2)
      • string1:第一個要連接的字符串。
      • string2:第二個要連接的字符串。
  3. 返回值:

    • CONCAT函數返回string1連接string2后的一個字符串值。
  4. 特點:

    • CONCAT函數不會改變現存的字符串,而是返回連接后的新字符串。
    • 如果任一參數為NULL,則CONCAT函數將其視為空字符串,并繼續執行連接操作。
    • 在Oracle中,CONCAT函數只能直接連接兩個字符串。如果需要連接多個字符串,可以嵌套使用CONCAT函數。
SYS@orcl>SELECT CONCAT(CONCAT('First line       第一行',CHR(10)),'Second line     第二行') AS msg_string FROM dual;MSG_STRING
----------------------------------------
First line      第一行
Second line     第二行

2.3、在 PL/SQL 中:

編寫 PL/SQL 代碼(例如存儲過程、函數或匿名塊),可以使用相同的方法來構建包含換行的字符串。

set serveroutput onDECLARE  v_string VARCHAR2(100);  
BEGIN  v_string := 'First line     第一行' || CHR(10) || 'Second line      第二行';  DBMS_OUTPUT.PUT_LINE(v_string);  
END;  
/

在這里插入圖片描述

3、SQLServer中實現字符串相加且換行

SQL Server 中,如果你想要將多個字符串相加并在它們之間包含換行符,你可以使用字符串連接操作符 + 或者 CONCAT函數,并結合換行符的字符表示。在 SQL Server 中,換行符通常使用 CHAR(13) + CHAR(10) 來表示,其中 CHAR(13) 是回車符(Carriage Return, CR),而 CHAR(10) 是換行符(Line Feed, LF)。在 Windows 環境中,這兩者通常一起使用以表示一個換行。

注意連接操作符 + 或者 CONCAT函數區別

  • 使用 + 操作符時不同,因為 + 操作符在連接字符串時,如果任何一側為 NULL,則結果也為 NULL。

  • CONCAT 函數在處理 NULL 值時特別有用,因為它會自動忽略任何 NULL 值,并返回其他非 NULL 字符串的連接結果

示例不在此展開

3.1、字符串連接操作符 + 并結合換行符

操作符+ CHAR(13) + CHAR(10)

SELECT N'First line      第一行' + CHAR(10) + CHAR(10) + N'Second line     第二行' AS msg_string ;
msg_string
----------------------------------------
First line      第一行Second line     第二行(1 行受影響)

操作符 + CHAR(10)

SELECT N'First line      第一行' + CHAR(10) + N'Second line     第二行' AS msg_string ;msg_string
---------------------------------------
First line      第一行
Second line     第二行(1 行受影響)

3.2、CONCAT函數實現并結合換行符

如何在 SQL Server 中將兩個字符串通過換行符連接起來并實現換行

SELECT CONCAT(N'First line      第一行',CHAR(13),CHAR(10),N'Second line     第二行') AS msg_string ;msg_string
----------------------------------------
First line      第一行
Second line     第二行

但是,在許多情況下,僅使用 CHAR(10) 就足夠了,因為大多數客戶端工具(如 SQL Server Management Studio, SSMS)和應用程序都能夠識別單獨的換行符作為新行的開始。所以你也可以這樣寫:

SELECT CONCAT(N'First line      第一行',CHAR(10),N'Second line     第二行') AS msg_string ;msg_string
---------------------------------------
First line      第一行
Second line     第二行(1 行受影響)

如果你在 SQL Server 存儲過程或函數中操作這些字符串,并且稍后可能在支持換行的文本編輯器或應用程序中查看它們,那么使用 CHAR(13) + CHAR(10) 或僅 CHAR(10) 通常都可以滿足需求。但是,如果你正在將字符串輸出到某些特定的系統或格式(如某些舊的文本文件或終端),那么你可能需要確保使用正確的換行符組合。

4、MySQL中實現字符串相加且換行

MySQL 中,當你想將多個字符串相加并在它們之間包含換行符時,你可以使用字符串連接操作符 CONCAT() 或簡單地使用 ||(在某些 MySQL 方言中,如 MariaDB,但標準 MySQL 使用 CONCAT())。換行符在 ASCII 中由字符 \n 表示(十進制的 10),但在 MySQL 字符串中,你需要使用 CHAR(10) 或 \n(如果 MySQL 配置支持它)。

4.1、使用 CONCAT() 和 CHAR(10)

mysql> SELECT CONCAT(CONCAT('First line       第一行',CHAR(10)),'Second line     第二行') AS msg_string FROM dual;
+------------------------------------------------------+
| msg_string                                           |
+------------------------------------------------------+
| First line       第一行
Second line     第二行       |
+------------------------------------------------------+
1 row in set (0.00 sec)mysql> SELECT CONCAT(CONCAT('First line       第一行',CHAR(10)),'Second line     第二行') AS msg_string FROM dual \G;
*************************** 1. row ***************************
msg_string: First line       第一行
Second line     第二行
1 row in set (0.00 sec)ERROR:
No query specified

4.2、MySQL 分支(如 MariaDB)中使用 || 和 \n:

注意:標準的 MySQL 不支持 || 作為字符串連接操作符,但 MariaDB 和其他一些變種支持

mysql> select '每箱重量不超過10kg.' ||  '第二行' as combined_string FROM dual;
+-----------------+
| combined_string |
+-----------------+
|               0 |
+-----------------+
1 row in set, 2 warnings (0.00 sec)
-- 可以看到,標準的 MySQL 查詢結果為0

4.3、在最新發布的MySQL8.0.x和MySQL8.4執行

在這里插入圖片描述
結果并非是預想值,和MySQL5.7.x執行的結果完全不一樣。具體原因參考官方文檔
https://dev.mysql.com/doc/refman/8.0/en/string-functions.html#function_char

(root@localhost)[db01]> SELECT CHAR(10);
+--------------------+
| CHAR(10)           |
+--------------------+
| 0x0A               |
+--------------------+
1 row in set (0.00 sec)

官方文檔有這樣一段內容及示例
By default, CHAR() returns a binary string. To produce a string in a given character set, use the optional USING clause:

mysql> SELECT CHAR(77,121,83,81,'76' USING utf8mb4);
+---------------------------------------+
| CHAR(77,121,83,81,'76' USING utf8mb4) |
+---------------------------------------+
| MySQL                                 |
+---------------------------------------+
1 row in set (0.00 sec)mysql> SELECT CHAR(77,77.3,'77.3' USING utf8mb4);
+------------------------------------+
| CHAR(77,77.3,'77.3' USING utf8mb4) |
+------------------------------------+
| MMM                                |
+------------------------------------+
1 row in set, 1 warning (0.00 sec)mysql> SHOW WARNINGS;
+---------+------+-------------------------------------------+
| Level   | Code | Message                                   |
+---------+------+-------------------------------------------+
| Warning | 1292 | Truncated incorrect INTEGER value: '77.3' |
+---------+------+-------------------------------------------+
1 row in set (0.00 sec)

基于以上內容,正確SQL應該如下

(root@localhost)[db01]> SELECT CONCAT('First line       第一行',CHAR(10 USING utf8mb4),'Second line     第二行') AS msg_string FROM dual \G;
*************************** 1. row ***************************
msg_string: First line       第一行
Second line     第二行
1 row in set (0.00 sec)ERROR:
No query specified(root@localhost)[db01]> SELECT CONCAT('First line       第一行',CHAR(10 USING utf8mb4),'Second line     第二行') AS msg_string FROM dual;
+------------------------------------------------------+
| msg_string                                           |
+------------------------------------------------------+
| First line       第一行
Second line     第二行       |
+------------------------------------------------------+
1 row in set (0.00 sec)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/17605.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/17605.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/17605.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

VMware的網絡不通?這一篇給你一定的參考.虛擬機網絡配置

如果你的虛擬機莫名其妙ping不通網絡了,可以參考一下我的配置。這不是一篇教程,你可以核對一下自己的bug。 虛擬網絡配置器中: 使用管理員權限更改設置,會跳出來vmnet0 橋接、僅主機和NAT都必須要有 vment0: vmnet1:…

【樂吾樂3D可視化組態編輯器】相機與視角

系統默認的相機為環繞旋轉相機,它可以環繞一個中心點做上下左右的旋轉,來從不同角度觀察場景。當然,您也可以把一些特定角度的信息保存下來,在系統中我們把這個信息稱作視角。通過交互中的切換視角動作,您就可以實現把…

英語新概念2-回譯法-lesson1 和 lesson17

Lesson 1 私人談話A private conversation 翻譯: Last Sunday I went to the theater. My seat was good and the play was interesting, but I can not enjoy it. A young man and a young woman sat behind me and they were talking loudly. I felt angry becau…

2024年電子、電氣與信息科學國際會議(EEIS 2024)

2024年電子、電氣與信息科學國際會議(EEIS 2024) 2024 International Conference on Electronics, Electrical and Information Science 【重要信息】 大會地點:昆明 大會官網:http://www.iceeis.com 投稿郵箱:iceeis…

振弦式土壓力計:功能優勢與專業應用

振弦式土壓力計,作為一種廣泛應用于土木工程領域的測量儀器,具有多種功能優勢,使得它成為了解被測結構物內部土壓力變化的有效工具。下面我將詳細介紹振弦式土壓力計的功能優勢及其在土木工程中的應用。 點擊輸入圖片描述(最多30字…

【運維項目經歷|021】Spark大數據分析平臺建設項目

目錄 項目名稱 項目背景 項目目標 項目成果 我的角色與職責 我主要完成的工作內容 本次項目涉及的技術 本次項目遇到的問題與解決方法 本次項目中可能被面試官問到的問題 問題1:項目周期多久? 問題2:服務器部署架構方式及數量和配置…

FTP協議——Pure-Ftpd安裝(Linux)

1、簡介 Pure-FTPd是一個高效、免費且開源的FTP服務器軟件,廣泛應用于各種Unix/Linux系統。它以其易用性、高安全性和功能豐富而聞名,適用于個人和企業的文件傳輸需求。 2、步驟 環境:Ubuntu 22.04.4 下載地址:Index of /pub/p…

3D Web輕量化平臺HOOPS Web Platform在數字工廠中的應用實例

今天我們來聊聊HOOPS工具對大型數據的處理和可視化管理。這里是一個數字工廠的儀表盤展示,您可以在儀表盤上看到包括工廠的能源消耗、計劃產量等數據信息,以及各種制造機器的生產量。 HOOPS中文網http://techsoft3d.evget.com/ 我們的HOOPS工具&#xf…

鏈表帶環問題的思考

判斷鏈表是否帶環 思路:快慢指針 慢指針走一步,快指針走兩步,當快指針追上慢指針時,代表該鏈表帶環。代碼如下: /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ …

百世慧入選第七屆數字中國建設峰會“2024企業數字化轉型典型應用案例”

5月24日-25日,第七屆數字中國建設峰會在福州舉行。本屆峰會是國家數據工作體系優化調整后首次舉辦的數字中國建設峰會,主題為“釋放數據要素價值,發展新質生產力”。 為了全方位展示各領域數字化最新成果,共創數字中國美好未來&a…

大胖子走迷宮,bfs

1.大胖子走迷宮 - 藍橋云課 (lanqiao.cn) from collections import dequen,kmap(int,input().split()) mp[0] for i in range(n):mp.append(0input()) vis[[0 for i in range(n1)] for i in range(n1)] qdeque() q.append((3,3,0)) vis[3][3]1 def f(t):if t<k:return 2eli…

【啟程Golang之旅】掌握Go語言數組基礎概念與實際應用

歡迎來到Golang的世界&#xff01;在當今快節奏的軟件開發領域&#xff0c;選擇一種高效、簡潔的編程語言至關重要。而在這方面&#xff0c;Golang&#xff08;又稱Go&#xff09;無疑是一個備受矚目的選擇。在本文中&#xff0c;帶領您探索Golang的世界&#xff0c;一步步地了…

java入門 springboot上傳文件

一、 pom.xml knife4j和springboot之間存在版本不兼容的問題&#xff0c;需要選對合適的版本 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apach…

雜談|RestFul和http的區別

前言 今天和我一組的小伙伴&#xff0c;在對接一個接口時&#xff0c;客戶將DELETED請求設置了body參數&#xff0c;導致一個功能反復搞了半天&#xff0c;今天就來說下這兩者的區別 1.HTTP概述 HTTP&#xff08;HyperText Transfer Protocol&#xff09;是一種用于從WWW&…

操作系統5_虛擬存儲器

操作系統5_虛擬存儲器 文章目錄 操作系統5_虛擬存儲器1. 虛擬存儲器1.1 虛擬存儲器的引入1.2 虛擬存儲器的概念1.3 虛擬存儲器的特征1.4 虛擬存儲器的實現方法2. 請求分頁存儲管理2.1 請求分頁中的硬件支持2.2 內存分配策略和分配算法2.3 調頁策略2.4 頁面置換算法2.4.1 最佳置…

docker部署相關命令

docker部署相關操作 查看docker基本信息 docker info查看docker中所有鏡像 docker images查看docker中所有容器 docker ps # 已啟動的容器 docker ps -a # 所有容器 docker ps -a -s # 查看所有容器和大小從鏡像創建容器并運行 docker run -it 鏡像名 # 簡單命令 dock…

c++——模板初始識

1.函數模板 我們經常用到Swap函數交換兩個值。由于需要交換的數據的類型不同&#xff0c;我們就需要寫不同參數類型的同名函數&#xff0c;也就是函數重載&#xff1a; 然而這三個函數的邏輯是一樣的&#xff0c;寫這么多有些多此一舉&#xff0c;通過函數模版可以寫一個通用…

LabVIEW機器視覺在自動化生產線中的應用是什么?

LabVIEW機器視覺技術在自動化生產線中有廣泛的應用&#xff0c;主要包括以下幾個方面&#xff1a; 質量控制與檢測&#xff1a; 缺陷檢測&#xff1a;使用機器視覺系統實時檢測產品表面的缺陷&#xff0c;如劃痕、裂紋、污漬等&#xff0c;確保產品質量。尺寸測量&#xff1a;通…

【量算分析工具-水平面積】GeoServer改造Springboot番外系列五

【量算分析工具-概述】GeoServer改造Springboot番外系列三-CSDN博客 【量算分析工具-水平距離】GeoServer改造Springboot番外系列四-CSDN博客 【量算分析工具-水平面積】GeoServer改造Springboot番外系列五-CSDN博客 【量算分析工具-方位角】GeoServer改造Springboot番外系列…

GoldenEye-v1(vulnhub)靶機練習實踐報告

GoldenEye-v1****靶機練習實踐報告 一、安裝靶機 靶機是.ova文件&#xff0c;需要用VirtualBox打開&#xff0c;但我習慣于使用VMWare,因此修改靶機文件&#xff0c;使其適用于VMWare打開。 解壓ova文件&#xff0c;得到.ovf文件和.vmdk文件。 用記事本打開.ovf文件并修改“…