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_
mysql中like語法拼接4種方式
在mysql中,字串與字串之間用空格連線相當於拼接,'a' 'b' 'c' 相當於 'abc' 'a'"b"'c'雖然沒用空格,但由於是不同的字串型別,故也相當於拼接後的'abc'或"abc" 在mysql中,like語法本身為: like '%str%' 解析:like與