กระทู้เก่าบอร์ด อ.Yeadram
3,366 3
URL.หัวข้อ /
URL
คำสั่ง sql แยกตัวเลขออกจาก Text ครับ
ผมมี Text ที่มีทั้งตัวอักษรและตัวเลขอยู่รวมกัน เช่น วิธีใช้ยาฉีดอินสุลิน
"ฉีดก่อนอาหารเช้า 10 ยูนิต ก่อนอาหารเย็น 20 ยูนิต" ทำอย่างไรจึงจะแยกตัวเลข 10 กับ 20 มาเก็บไว้ field1,field2 เพื่อนำไปใช้คำนวณต่อไป ขอเป็นคำสั่ง sql นะครับ ขอบคุณครับ
ปล.วิธีใช้ยาจะไม่ Fix คำ ครับเช่นบางทีเป็น ฉีดยาใต้ผิวหนัง ฉีดก่อนอาหารเช้า 10 ยูนิต ก่อนอาหารเย็น 20 ยูนิต หรือ ฉีดยา 10 ยูนิต เวลา 18.00 น. แต่ข้อสังเกตคือ ตัวเลขจะอยู่ก่อนคำว่า ยูนิต เสมอ ครับ
"ฉีดก่อนอาหารเช้า 10 ยูนิต ก่อนอาหารเย็น 20 ยูนิต" ทำอย่างไรจึงจะแยกตัวเลข 10 กับ 20 มาเก็บไว้ field1,field2 เพื่อนำไปใช้คำนวณต่อไป ขอเป็นคำสั่ง sql นะครับ ขอบคุณครับ
ปล.วิธีใช้ยาจะไม่ Fix คำ ครับเช่นบางทีเป็น ฉีดยาใต้ผิวหนัง ฉีดก่อนอาหารเช้า 10 ยูนิต ก่อนอาหารเย็น 20 ยูนิต หรือ ฉีดยา 10 ยูนิต เวลา 18.00 น. แต่ข้อสังเกตคือ ตัวเลขจะอยู่ก่อนคำว่า ยูนิต เสมอ ครับ
3 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R19374
พยายามนั่งอ่านทำความเข้าใจ code อย่างตั้งใจ บอกตรงๆ มึนเลยครับ เอาเป็นว่าขอ copy ไปใช้งานเลย ขอบคุณมากๆ ครับ ขอถามนอกเรื่องต่ออีกนิดครับ ถ้าผมใช้ฐานข้อมูลเป็น mysql และต้องการ query ข้อมูลผ่าน command line โดยตรง (ไม่ใช้ access) จะเขียนคำสั่งอย่างไรครับ เพื่อให้ได้ข้อมูลแบบเดียวกัน "select ...."
3 @R19382
เรื่อง MySQL ห่างไปนานและไม่ชำนาญครับ ยังไงรอท่านอื่นตอบแล้วกันนะครับ
Time: 0.3611s
ใส่โค๊ดนี้ลงไปใน Module ใหม่
Public Function SplitA(Str As String, Delim As String, N As Integer) As String
Dim Temp As String
Str = Replace(Str, Delim, ";;" & Delim)
On Error GoTo Err0
Temp = Split(Str, Delim)(N - 1)
SplitA = Temp
Err0: Exit Function
End Function
Public Function NumOnly(strTxt) As Long
Dim i As Long
If strTxt Like "*;;" Then
For i = 1 To Len(strTxt)
If Asc(Mid(strTxt, i, 1)) > 47 And Asc(Mid(strTxt, i, 1)) < 58 Then
TTT = TTT & Mid(strTxt, i, 1)
End If
Next i
End If
NumOnly = TTT
End Function
จากนั้นที่คิวรี่สร้างฟิลด์ใหม่ตามต้องการประมาณนี้ครับ สมมุติฟิลด์ชื่อ Details
T1: NumOnly(SplitA([Details],"ยูนิต",1))
T2: NumOnly(SplitA([Details],"ยูนิต",2))
T3: NumOnly(SplitA([Details],"ยูนิต",3))
T4: NumOnly(SplitA([Details],"ยูนิต",4))
ประมาณนี้ครับ ปรับใช้ดู
ปล. ข้อมูลจะช้าลงตามจำนวนเรคคอร์ดที่มากขึ้นนะครับ