 |
|
Oracle sql มีวิธีการ select แล้วเก็บไว้ที่ตัวแปร เพื่อเปรียบเทียบค่า ก่อน แล้วค่อยคืนค่ากลับ |
|
 |
|
|
 |
 |
|
ผมมี field ข้อมูลหนึ่ง ชื่อ Title ครับ ข้อมูลใน field นี้จะมีรูปแบบ ดังนี้
aaaaaaaaa : bbbbbbbbb = cccccccc / dddddd : eeeee , ffffff .
ทีนี้ต้องการให้ดึงข้อมูลมาเฉพาะ ข้อมูล aaaaaaaa
ผมใช้ query ดังนี้
Code (SQL)
SELECT BIB_ID, rtrim(substr(TITLE,1, decode(instr(TITLE, ' /'),0,99,instr(TITLE, ' /'))), ' /')
AS BIBTITLE
FROM BIB_TITLE_V
มันช่วยตัดข้อความหลัง / ออกไปได้ แต่ยังเหลือข้อความ : bbbbbb = ccccccc
ผมลองใช้ CASE ช่วย
Code (SQL)
SELECT BIB_ID, TITLE ,
CASE WHEN INSTR(TITLE, ' :') > 0 THEN rtrim(substr(TITLE,1, decode(instr(TITLE, ' :'),0,99,instr(TITLE, ' :'))), ' :')
WHEN INSTR(TITLE, ' =') > 0 THEN rtrim(substr(TITLE,1, decode(instr(TITLE, ' ='),0,99,instr(TITLE, ' ='))), ' =')
WHEN INSTR(TITLE, ' /') > 0 THEN rtrim(substr(TITLE,1, decode(instr(TITLE, ' /'),0,99,instr(TITLE, ' /'))), ' /')
END AS BIBTITLE
FROM BIB_TITLE_V
บาง row ไม่มีเครื่องหมาย : พอมันเจอ = ก็จะได้ข้อมูลออกมาเป็น
aaaaaa / ffffff
มันไม่ตัดเหลือแต่ aaaaaa ครับ
พอจะมีคำสั่งที่ select title ออกมาพักเป็นตัวแปรไว้ก่อน แล้ว ค่อยใช้ instr ไล่หาสัญลักษณ์ : = / ทีละตัว
ก่อนคืนค่ากลับ หรือไม่ครับ
ขอบคุณครับ
Tag : .NET, Oracle, Web (ASP.NET)
|
ประวัติการแก้ไข 2013-06-04 10:12:31 2013-06-04 10:13:42
|
 |
 |
 |
 |
Date :
2013-06-04 10:09:47 |
By :
Aod47 |
View :
4255 |
Reply :
2 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ทำได้แล้วครับผม ใกล้เคียงสุดๆ แล้ว
Code (SQL)
SELECT BIB_ID,
CASE
WHEN INSTR(TITLE, ' :') > 0 THEN rtrim(substr(TITLE,1, decode(instr(TITLE, ' :'),0,99,instr(TITLE, ' :'))), ' :')
ELSE CASE
WHEN INSTR(TITLE, '=') > 0 THEN rtrim(substr(TITLE,1, decode(instr(TITLE, '='),0,99,instr(TITLE, '='))), '=')
ELSE CASE
WHEN INSTR(TITLE, '/') > 0 THEN rtrim(substr(TITLE,1, decode(instr(TITLE, '/'),0,99,instr(TITLE, '/'))), '/')
ELSE TITLE
END
END
END AS BIBTITLE
FROM BIB_TITLE_V
|
 |
 |
 |
 |
Date :
2013-06-04 13:21:02 |
By :
Aod47 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
จัดไปครับ
|
 |
 |
 |
 |
Date :
2013-06-04 13:50:28 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|