oracle串连接,Oracle中串连接符||的使用心得(个人见解)
Oracle中可以用串連接符||將若干個串連在一起(Oracle中也可以使用concat函數,但是它只最多連接兩個串。而MySQL中concat可以連接多個串。在SQL Server中則使用+進行串連接)。
當然,這兩個串可以是列名或字面值。例如:
select province || city from China;
這樣,查詢出的結果就類似:“遼寧丹東”,將列或串連接起來中間是沒有空格的。當然為了閱讀起來更方便,可以利用逗號或空格將province和city列連接起來,形成類似“遼寧,丹東”的效果: select province || ',' || city from China;
以上是比較正統的用法。
---------------------我是分割線----------------------------
下面是我發現的旁門左道。
最近寫一個查詢的時候,為了偷懶,想用一條語句來查詢一個或多個列(當然,前提是這多個列的類型是一樣的)中含有某一字符(即模糊查詢)的記錄。例如表T中有a、b、c、d四個列,想要將a、b、c中任意一個列或多個列中含有字符“x“的記錄查出來,可以使用如下語句:
select * from T where a || b || c like '%x%';
但個人感覺這種用法其實并不是太好,只是有時候可以偷偷懶^_^
||究竟是如何工作的不太理解,只有根據自己的實驗得到一個猜想:
像上面那個例子,應該是吧a、b、c三列的值連在了一起,然后查找‘%x%’這樣的字符。換句話來說,如果某一條記錄中abc三列的值分別為”rs“、”tx“、”yz“連在一起是”rstxyz“,而你的查詢條件是'%xy%'(想查a、b、c中一個列或多個列是否含有”xy“)。本來是沒有的,但是像類似上面例子那樣使用的話,就會查到有這樣的記錄。這點我是試過的,的確會出現這樣的情況。
當然,上面的情況也可以避免,可以在連接符||中間加上一些分隔標志,這些分隔標志必須是列中不存在的,如”,“,即 select * from T where a || ',' || b || ',' || c like '%xy%';
同時,這種用法不適合條件是”=“的精確查詢,因為a、b、c三列的值連在了一起會成為”rstxyz“,如果使用如下語句: select * from T where a || b || c = 'rstxyz';
就相當于在”rstxyz“中查找(而不是在a、b、c的一個或多個列中查找)。這樣,本來在a、b、c中一列或多列中沒有含有”rstxyz“,但是用上面的語句卻可以查詢出記錄。而如果使用這樣的語句 select * from T where a || b || c = 'tx';
按本意來說的話是應該查詢到記錄的,但是上面的語句卻無法查詢出來。
總之,這樣的用法有偷工減料的嫌疑,還是少用為好。
總結
以上是生活随笔為你收集整理的oracle串连接,Oracle中串连接符||的使用心得(个人见解)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 卷积神经网络(高级篇) Inceptio
- 下一篇: TemplateSyntaxError