我保留表格行上的數據,如下所示;Oracle正則表達式使用而不是INSTR函數
t_course
+------+------------------------------------------+
| sid | courses |
+------+------------------------------------------+
| 1 | cs101.math102.ns202-2.phy104 |
+------+------------------------------------------+
| 2 | cs101.math201.ens202-1.phy104-10.chm105 |
+------+------------------------------------------+
| 3 | cs101.ns202-2.math201.ens202-1.phy104 |
+------+------------------------------------------+
現在,我要帶的課程中提到的同時NS202和ens202的總和。通常它應該只帶來記錄哪個id是3,它帶來所有的記錄(因爲instr)。我爲此使用了許多方法,但它不起作用。例如;
select count(*) from
t_course
where
instr(courses, 'ns202') > 0
and instr(courses, 'ens202') > 0;
上面的代碼無法正常工作,因爲它需要ns202,但ens202本身包含ns202。我試圖使用正則表達式,我將所有課程轉換爲行(拆分),但這既破壞了工作邏輯,也減慢了速度。
我怎樣才能做到這一點與正則表達式而不是instr按照開頭(例如ns202%)邏輯? (從ns202開始或在點後面開始)
你想同時擁有'ns202'和'ens202'的行嗎? –
@vkp,是的,我只想要包含ns202和ens202的記錄總和。 –
這是什麼意思*總和記錄*在這裏? –