問題一:
某公司印了一批儲值卡,卡的密碼是隨機產生的,現在出現這個問題:
卡裡面的“O和0”(哦和零)“i和1”(哎和一),使用者反映說看不清楚,公司決定,把儲存在資料庫中的密碼中所有的“哦”都改成“零”,把所有的“i”都改成“1”;
請編寫SQL語句實現以上要求;
資料庫表名:Card;密碼欄位名:PassWord;
分析:
這是更新語句,需要使用UPDATE語句;
因為牽涉到字串的替換,需要使用到SQL Server中的函數Replace;
如果用兩行SQL語句,則為
Update Card Set PassWord = Replace(密碼,'O','0')
Update Card Set PassWord = Replace(密碼,'i','1')
如果用一行來表示,則可以寫成:
Update Card
Set PassWord = Replace(Replace(密碼,'O','0'),'i','1')
問題二:
在資料庫表中有以下字元資料,如:
13-1、13-2、13-3、13-10、13-100、13-108、13-18、13-11、13-15、14-1、14-2
現在希望通過SQL語句進行排序,並且首先要按照前半部分的數字進行排序,然後再按照後半部分的數字進行排需,輸出要排成這樣:
13-1、13-2、13-3、13-10、13-11、13-15、13-18、13-100、13-108、14-1、14-2
資料庫表名:SellRecord;欄位名:ListNumber;
分析:
這是查詢語句,需要使用SELECT語句
需要使用到ORDER BY進行排序,並且在ORDER BY的排序列中,也需要重新計算出排序的數字來
前半部分的數字,可以從先找到“-”符號的位置,然後,取其左半部分,最後再使用Convert函數將其轉換為數字:
Convert(int, Left(ListNumber, CharIndex('-', ListNumber)-1))
後半部分的數字,可以先找到“-”符號的位置,然後把從第一個位置到該位置的全部字元替換為空白格,最後再使用Convert函數將其轉換為數字:
Convert(int, Stuff(ListNumber,1, Charindex('-', ListNumber), ''))
最後代碼如下:
SELECT ListNumber
FROM SellRecord
ORDER BY
Convert(int, Left(ListNumber, CharIndex('-', ListNumber)-1)),
Convert(int, Stuff(ListNumber,1, Charindex('-', ListNumber), ''))
日期函數:
數學函數:
系統函數:
字串函數:
(北大青鳥的PPT上看到的)