iT邦幫忙

2024 iThome 鐵人賽

DAY 5
0
IT 管理

不居功的系統隱士 - 30天由淺入深學SQL系列 第 5

Day 5 基礎-典型語法+字串常用函式

  • 分享至 

  • xImage
  •  

典型語法

example多用dual來舉例, dual是oracle本身內建的一張單行單列的table, 可以用來加工創造成自己要的table

  • SQL基礎語法結構
    select A as B, A1 as BB, A3 (A: 欄位, 要查詢的項目, 可搭配as將欄位重新命名B)
    from T1, T2, T3 (T: Table, 資料來源的table name, 可搭配where語句串接多張table)
    where P (P: 條件式, 可搭配 and or 同時考量多種條件)
    ; (結尾可加分號, 代表一次query結束, 可by分號讓同一段SQL QUERY出多個結果)

進階語法

  • Select加入運算子的變形版
    以下example依序為: 單純query整張table、輸出不重複的username以及指定條件必須姓氏是王的查詢
    https://ithelp.ithome.com.tw/upload/images/20240916/2016230246ulj6sEtq.png

保留字

保留字為程式語言中已經被用來定義為關鍵字的單詞, 使用者在命名欄位的時候要記得避開保留字, 避免SQL 因為無法識別而 ERROR.

-- in為關鍵字, 所以不可再將欄位名稱名為in, 若真的想使用, 在oracle中可以加入雙引號做區隔
select V."in"
from(
    select 1 as "in"
    from dual
)V

字串常用函式

-- 1. concat: 串接字串
select c1, c2, concat(c1, c2) c3
from(
select 'a' C1, 123 C2
from dual
)
> output: a 123 a123

-- 2. instr: 搜尋欄位中c2在c1的index位置
select c1, c2, instr(c1, c2) as c3
from(
select 'abc' C1, 'bc' C2
from dual
)
> output: abc bc 2

-- 3. length: 計算字串長度
select c1, c2, length(c1) c3
from(
select 'a' C1, 123 C2
from dual
)
> output: a 123 1

-- 4. upper/lower: 轉大寫/轉小寫, 比對字元前建議都先轉好大小寫在比對防呆
select c1, upper(c1), lower(c1)
from(
select 'aBGDhy5rg' C1
from dual
)
> output: aBGDhy5rg ABGDHY5RG abgdhy5rg

-- 5. replace: 取代字串
select replace(c1, c2, c3)
from(
select 'I like apples.' as C1, 'like' as C2,  'hate' as C3
from dual
)
> output: I hate apples.

-- 6. trim/ltrim/rtrim: 用於移除空白
select length(c1), length(trim(c1)), length(ltrim(c1))
from(
select '      hey      ' as C1
from dual
)
> output: 15 3 9

上一篇
Day 4 基礎-關聯式資料表(RDBMS)與非關聯式資料表(NoSQL)
下一篇
Day 6 基礎-從子查詢到WITH子句
系列文
不居功的系統隱士 - 30天由淺入深學SQL14
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言