1. 程式人生 > >mysql中的字串的拼接

mysql中的字串的拼接

更新一個欄位,在它的後面加一個字串,不查詢資料庫得到這個欄位值 怎麼新增??
我的test表,有個user欄位,我現在想在它後面加了另一個使用者的名字
我在mysql資料庫這樣寫
UPDATE test SET user= user+ ‘,phpchina’ WHERE id= ‘2’;
這樣是不對的,mysql資料庫把它當成數字相加了,user欄位值變成空了。
應該:
UPDATE test SET user= CONCAT(user,’,phpchina’) WHERE id= ‘2’;

即:“+”只適合整數相加,不適合字串。

附:兩個MySQL字串函式:
(1) CONCAT(str1,str2,…)
返回結果為將引數相連後得到的字串。如有任何一個引數為NULL ,則返回值為 NULL。或許有一個或多個引數。 如果所有引數均為非二進位制字串,則結果為非二進位制字串。 如果自變數中含有任一二進位制字串,則結果為一個二進位制字串。一個數字引數被轉化為與之相等的二進位制字串格式;若要避免這種情況,可使用顯式型別。
(2)CONCAT_WS()
update friend set cname=CONCAT_WS(‘.’,cname,’wang’) where id=1(欄位cname原值為’Rick’)
輸出結果為Rick.wang.注意,第一個引數為連線兩個字串的字元.

字串的拼接
1,Mysql
在Java、C#等程式語言中字串的拼接可以通過加號“+”來實現,比如:”1”+”3”、”a”+”b”。
在MYSQL中也可以使用加號“+”來連線兩個字串,比如下面的SQL:
Sql程式碼

SELECT '12'+'33',FAge+'1' FROM T_Employee   

執行結果
Sql程式碼

'12'+'33'  FAge+'1'   
45    26   
45  29   
45  24   
45  26   
45  29   
45  28   
45  24   
45  29   
45  23   

MYSQL會嘗試將加號兩端的欄位值嘗試轉換為數字型別,如果轉換失敗則認為欄位值為
0,比如我們執行下面的SQL語句:
Sql程式碼
SELECT ‘abc’+’123’,FAge+’a’ FROM T_Employee

執行完畢我們就能在輸出結果中看到下面的執行結果:
Html程式碼

'abc'+'123'  FAge+'a'   
123  25   
123  28   
123  23   
123  25   
123  28   
123  27   
123  23   
123  28   
123  22   

在MYSQL中進行字串的拼接要使用CONCAT函式,CONCAT函式支援一個或者多個引數,
引數型別可以為字串型別也可以是非字串型別,對於非字串型別的引數MYSQL將嘗試
將其轉化為字串型別,CONCAT函式會將所有引數按照引數的順序拼接成一個字串做為
返回值。比如下面的SQL語句用於將使用者的多個欄位資訊以一個計算欄位的形式查詢出來:
Sql程式碼

SELECT CONCAT('工號為:',FNumber,'的員工的幸福指數:',FSalary/(FAge-21))

FROM T_Employee 執行完畢我們就能在輸出結果中看到下面的執行結果:
Java程式碼

CONCAT('工號為:',FNumber,'的員工的幸福指數:',FSalary/(FAge-21))   
工號為:DEV001的員工的幸福指數:2075.000000   
工號為:DEV002的員工的幸福指數:328.685714   
工號為:HR001的員工的幸福指數:1100.440000   

MYSQL中還提供了另外一個進行字串拼接的函式CONCAT_WS,
CONCAT_WS可以在待拼接的字串之間加入指定的分隔符,它的第一個引數值為採用的分
隔符,而剩下的引數則為待拼接的字串值,比如執行下面的SQL:
Sql程式碼

SELECT CONCAT_WS(',',FNumber,FAge,FDepartment,FSalary) FROM T_Employee   

執行完畢我們就能在輸出結果中看到下面的執行結果:
Java程式碼

CONCAT_WS(',',FNumber,FAge,FDepartment,FSalary)   
DEV001,25,Development,8300.00   
DEV002,28,Development,2300.80   
HR001,23,HumanResource,2200.88   
HR002,25,HumanResource,5200.36   
IT001,28,InfoTech,3900.00   
IT002,27,InfoTech,2800.00   
SALES001,23,Sales,5000.00   
SALES002,28,Sales,6200.00   
SALES003,22,Sales,1200.00   

2,oracle
Oracle中使用“||”進行字串拼接,其使用方式和MSSQLServer中的加號“+”一樣。
比如執行下面的SQL語句:
Sql程式碼

SELECT '工號為'||FNumber||'的員工姓名為'||FName FROM T_Employee   
WHERE FName IS NOT NULL   

執行完畢我們就能在輸出結果中看到下面的執行結果:
Html程式碼

工號為||FNUMBER||的員工姓名為||FNAME   
工號為DEV001的員工姓名為Tom   
工號為DEV002的員工姓名為Jerry   
工號為SALES001的員工姓名為John   
工號為SALES002的員工姓名為Kerry   
工號為SALES003的員工姓名為Stone   
工號為HR001的員工姓名為Jane   
工號為HR002的員工姓名為Tina   
工號為IT001的員工姓名為Smith   

除了“||”,Oracle還支援使用CONCAT()函式進行字串拼接,比如執行下面的SQL語句:
Sql程式碼

SELECT CONCAT('工號:',FNumber) FROM T_Employee   

執行完畢我們就能在輸出結果中看到下面的執行結果:
Html程式碼

CONCAT(工號:,FNUMBER)   
工號:DEV001   
工號:DEV002   
工號:HR001   
工號:HR002   
工號:IT001   
工號:IT002   
工號:SALES001   
工號:SALES002   
工號:SALES003    

如果CONCAT中連線的值不是字串,Oracle會嘗試將其轉換為字串,
與MYSQL的CONCAT()函式不同,Oracle的CONCAT()函式只支援兩個引數,不支援兩個以
上字串的拼接。如果要進行多個字串的拼接的話,可以使用多個CONCAT()函式巢狀使用。
Sql程式碼

SELECT CONCAT(CONCAT(CONCAT('工號為',FNumber),'的員工姓名為'),FName) FROM   
T_Employee   
WHERE FName IS NOT NULL   

執行完畢我們就能在輸出結果中看到下面的執行結果:
Html程式碼

CONCAT(CONCAT(CONCAT(工號為,FNUMBER),的員工姓名為),FNAME)   
工號為DEV001的員工姓名為Tom   
工號為DEV002的員工姓名為Jerry   
工號為SALES001的員工姓名為John   
工號為SALES002的員工姓名為Kerry   
工號為SALES003的員工姓名為Stone   
工號為HR001的員工姓名為Jane   
工號為HR002的員工姓名為Tina   
工號為IT001的員工姓名為Smith   

相關推薦

Shell字串拼接的方法

我們可以看到在系統中,字串的拼接方法為(.bash_profile檔案): PATH=$PATH:$HOME/.local/bin:$HOME/bin 以及《Linux命令列與Shell指令碼程式設計大全中提到的》 var=${var1}${var2} #!/bin/bash va

mysql字串的擷取

MySQL 字串擷取函式:left(), right(), substring(), substring_index()。還有 mid(), substr()。其中,mid(), substr() 等價於 substring() 函式,substring() 的功能非常強大和靈活。 1.

Python字串拼接的N種方法

python拼接字串一般有以下幾種方法: ①直接通過(+)操作符拼接 s = 'Hello'+' '+'World'+'!'print(s) 輸出結果:Hello World! 使用這種方式進行字串連線的操作效率低下,因為python中使用 + 拼接兩個字串時會生成一

SQL字串拼接

1. 概述 在SQL語句中經常需要進行字串拼接,以sqlserver,oracle,mysql三種資料庫為例,因為這三種資料庫具有代表性。 sqlserver: select '123'+'456'; oracle: select '123'||'45

C++字串拼接、十六進位制轉十進位制

txt檔案如下: 檔案說明:檔案中為十六進位制資料。 實現:先進行字串拼接,然後進行十六進位制轉十進位制。 字串拼接程式碼: //字串拼接 infile>>string1>>string2; string1=string1+string2

MySQL字串排序問題

 在MySQL中,我們經常會對一個欄位進行排序查詢,但進行中文排序和查詢的時候,對漢字的排序和查詢結果往往都是錯誤的。 網上提供了很多方法: 比如欄位後" + 0" 或者 " *1", 但是如果是按照首字母排序實際上並沒有效果, 順序依舊讓人摸不著頭腦, 今天試了下做了個總

Mysql字串處理的幾種處理方法concat、concat_ws、group_concat

Mysql中字串處理的幾種處理方法concat、concat_ws、group_concat以下詳情:   1.MySQL中concat函式 使用方法: CONCAT(str1,str2,…)     返回結果為連線引數產生的字串。

ABAP非Unicode系統字串拼接(CONCATENATE)時吃字元問題

       系統是老R3,非Unicdoe系統,某些表字段是從外界系統過來的,由於介面設計的固定長度,外界系統傳超長字串過來後,就可能從最後一箇中文字元中間截斷,這問題到還沒什麼,只不過顯示時最後一個字元顯示成亂碼而已,但是,如果將這些表字段撈出來與其它分隔符(如豎線) CONCATENATE時,可能會將

mysql字串和時間互相轉換的方法(自動轉換及DATE_FORMAT函式)

mysql中字串和時間互相轉換的方法(自動轉換及DATE_FORMAT函式) 一、mysql中字串轉換成日期 下面將講述如何在MYSQL中把一個字串轉換成日期: 1、無需轉換的:  SELECT * FROM tairlist_day WHERE rq>'2010-07-31' AND rq<

mysql字串索引

1.只是用字串的最左邊n個字元建立索引,推薦n<=10;比如index left(address,8),但是需要知道字首索引不能在order by中使用,也不能用在索引覆蓋上。 2.對字串使用hash方法將字串轉化為整數,address_key=hashToInt(address),對ad

在for迴圈字串拼接一般使用StringBuffer.append()來代替String的運算子+

每次迴圈裡的字串+連線,都會新產生一個string物件,在java中,新建一個物件的代價是很昂貴的,特別是在迴圈語句中,效率較低。故在迴圈中一般使用StringBuffer.append來代替string的+運算子// This is bad  String s = ""; 

Python 字串拼接的 N 種方法

python拼接字串一般有以下幾種方法: 1、直接通過(+)操作符拼接 s = 'Hello'+' '+'World'+'!' print(s) 輸出結果:Hello World! 使用這種方式進行字串連線的操作效率低下,因為python中使用

C++巨集定義字串拼接,標誌貼上

關於記號貼上操作符(token paste operator): ## 1. 簡單的說,“##”是一種分隔連線方式,它的作用是先分隔,然後進行強制連線。其中,分隔的作用類似於空格。我們知道在普通的巨集定義中,前處理器一般把空格解釋成分段標誌,對於每一段和前面比較,相同的

oracle,mysql字串,date,timestamp轉換

查詢當前系統日期: Oracle: select to_char(sysdate, 'yyyy-mm-dd') Mysql:select current_date或者 select curdate() 查詢當前系統時間: Oracle: select to_char(s

Java字串拼接是使用 + 還是 StringBuffer

    直奔主題,一般在拼接是我們都是習慣使用 + ,當然如果只是短呃字串拼接 使用 + 是毋庸置疑的,為什麼呢? 主要就是:自己操作方便,開發速度快。其實就是方便。     但是如果是大範圍的 字串拼接 ,比如下面的程式碼 做的測試 long currentTimeM

mysql字串拼接

更新一個欄位,在它的後面加一個字串,不查詢資料庫得到這個欄位值 怎麼新增?? 我的test表,有個user欄位,我現在想在它後面加了另一個使用者的名字 我在mysql資料庫這樣寫 UPDATE test SET user= user+ ‘,

MYSQL字串拼接

一、MySQL自帶字串拼接函式 CONCAT 字串拼接 CONCAT_WS    指定字串分割拼接字串拼接 ① 語法:CONCAT(str1,str2…)   解釋:concat 拼接 str1和str2字串, 省略號....代表可

mySql,查詢一串字串裡有幾個'abc'

mySql中,查詢一串字串裡有幾個’abc’ 我在實習時候碰到過一個這樣的需求,在表裡有一串12位的字串,全是數字0和1,如下: 000011111111 表示這個人一年中,前四個月沒有繳費,後八個月繳費了。我的需求是想知道這個人一年總共繳費多少個月。 在寫sql語句時,有一個巧方法,利

MySQL字串的數字、英文字元、漢字提取

原文:https://blog.csdn.net/oyezhou/article/details/81665643 另外一篇類似的:https://blog.csdn.net/haijiege/article/details/79460236 建立一個Num_char_

mysqllike語法拼接4種方式

在mysql中,字串與字串之間用空格連線相當於拼接,'a' 'b' 'c' 相當於 'abc' 'a'"b"'c'雖然沒用空格,但由於是不同的字串型別,故也相當於拼接後的'abc'或"abc"  在mysql中,like語法本身為: like  '%str%' 解析:like與