日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle串连接,Oracle中串连接符||的使用心得(个人见解)

發(fā)布時間:2024/7/5 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle串连接,Oracle中串连接符||的使用心得(个人见解) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Oracle中可以用串連接符||將若干個串連在一起(Oracle中也可以使用concat函數(shù),但是它只最多連接兩個串。而MySQL中concat可以連接多個串。在SQL Server中則使用+進(jìn)行串連接)。

當(dāng)然,這兩個串可以是列名或字面值。例如:

select province || city from China;

這樣,查詢出的結(jié)果就類似:“遼寧丹東”,將列或串連接起來中間是沒有空格的。當(dāng)然為了閱讀起來更方便,可以利用逗號或空格將province和city列連接起來,形成類似“遼寧,丹東”的效果: select province || ',' || city from China;

以上是比較正統(tǒng)的用法。

---------------------我是分割線----------------------------

下面是我發(fā)現(xiàn)的旁門左道。

最近寫一個查詢的時候,為了偷懶,想用一條語句來查詢一個或多個列(當(dāng)然,前提是這多個列的類型是一樣的)中含有某一字符(即模糊查詢)的記錄。例如表T中有a、b、c、d四個列,想要將a、b、c中任意一個列或多個列中含有字符“x“的記錄查出來,可以使用如下語句:

select * from T where a || b || c like '%x%';

但個人感覺這種用法其實(shí)并不是太好,只是有時候可以偷偷懶^_^

||究竟是如何工作的不太理解,只有根據(jù)自己的實(shí)驗(yàn)得到一個猜想:

像上面那個例子,應(yīng)該是吧a、b、c三列的值連在了一起,然后查找‘%x%’這樣的字符。換句話來說,如果某一條記錄中abc三列的值分別為”rs“、”tx“、”yz“連在一起是”rstxyz“,而你的查詢條件是'%xy%'(想查a、b、c中一個列或多個列是否含有”xy“)。本來是沒有的,但是像類似上面例子那樣使用的話,就會查到有這樣的記錄。這點(diǎn)我是試過的,的確會出現(xiàn)這樣的情況。

當(dāng)然,上面的情況也可以避免,可以在連接符||中間加上一些分隔標(biāo)志,這些分隔標(biāo)志必須是列中不存在的,如”,“,即 select * from T where a || ',' || b || ',' || c like '%xy%';

同時,這種用法不適合條件是”=“的精確查詢,因?yàn)閍、b、c三列的值連在了一起會成為”rstxyz“,如果使用如下語句: select * from T where a || b || c = 'rstxyz';

就相當(dāng)于在”rstxyz“中查找(而不是在a、b、c的一個或多個列中查找)。這樣,本來在a、b、c中一列或多列中沒有含有”rstxyz“,但是用上面的語句卻可以查詢出記錄。而如果使用這樣的語句 select * from T where a || b || c = 'tx';

按本意來說的話是應(yīng)該查詢到記錄的,但是上面的語句卻無法查詢出來。

總之,這樣的用法有偷工減料的嫌疑,還是少用為好。

總結(jié)

以上是生活随笔為你收集整理的oracle串连接,Oracle中串连接符||的使用心得(个人见解)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。