ผู้เขียน หัวข้อ: แปลงstringเป็นinteger  (อ่าน 9160 ครั้ง)

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

ออฟไลน์ nongtan

  • Full Member
  • ***
  • กระทู้: 106
  • Respect: +1
    • ดูรายละเอียด
แปลงstringเป็นinteger
« เมื่อ: พฤษภาคม 01, 2012, 16:54:22 PM »
0
เนื่องจากตรงช่องผลLAB เก็บเป็น string ถ้าจะลองแปลงเป็น Integer ดู เลขจำนวนเต็มน่าจะได้แล้ว แต่จะแยกเลขหลังทศนิยมออกมาแปลงเป็น integer จะทำอย่างไรได้บ้างครับ
SELECT lh.vn,lo.lab_order_result,
CONVERT(REPLACE(trim(lo.lab_order_result),',',''),UNSIGNED  integer) AS num1,
CONVERT(substring_index(trim(lo.lab_order_result),'.',-1),SIGNED integer) AS num2
from lab_head lh
left outer join lab_order lo on lo.lab_order_number=lh.lab_order_number
left outer join lab_items l1 on l1.lab_items_code=lo.lab_items_code
where lh.order_date between "2012-02-01" and "2012-02-20"
ชญานนท์ ร.พ. จิตเวชสงขลาราชนครินทร์
Master(กำลังปลด) : DELL  Ram 32GB HDD-SATA CentOS7MariaDB+TokuDB 10.1.14
Slave1 : HP Ram 8 GB CentOS7 MariaDB+TokuDB 10.1.14
Slave2 : Lenovo Ram 32GB HDD-SAS 400GB 4ลูก  CentOS7  กำลังลง MariaDB+TokuDB แต่ยังไม่ผ่าน
ขึ้นระบบโดย BMS Team เมื่อ 18พ.ค.52
HOSXP 3.

ออฟไลน์ realaerm

  • Full Member
  • ***
  • กระทู้: 152
  • Aerm
  • Respect: +1
    • ดูรายละเอียด
Re: แปลงstringเป็นinteger
« ตอบกลับ #1 เมื่อ: พฤษภาคม 02, 2012, 09:11:40 AM »
0
เนื่องจากตรงช่องผลLAB เก็บเป็น string ถ้าจะลองแปลงเป็น Integer ดู เลขจำนวนเต็มน่าจะได้แล้ว แต่จะแยกเลขหลังทศนิยมออกมาแปลงเป็น integer จะทำอย่างไรได้บ้างครับ
SELECT lh.vn,lo.lab_order_result,
CONVERT(REPLACE(trim(lo.lab_order_result),',',''),UNSIGNED  integer) AS num1,
CONVERT(substring_index(trim(lo.lab_order_result),'.',-1),SIGNED integer) AS num2
from lab_head lh
left outer join lab_order lo on lo.lab_order_number=lh.lab_order_number
left outer join lab_items l1 on l1.lab_items_code=lo.lab_items_code
where lh.order_date between "2012-02-01" and "2012-02-20"


ลองแบบนี้ดูครับ

เอา variable มาวางแล้วเขียนคำสั่งแบบนี้ครับ

value:=GetSQLIntegerData('SELECT lo.lab_order_result
'from lab_head lh '+
'left outer join lab_order lo on lo.lab_order_number=lh.lab_order_number '+
'left outer join lab_items l1 on l1.lab_items_code=lo.lab_items_code '+
'where lh.order_date between "2012-02-01" and "2012-02-20" and lo.lab_items_code="'+DBPlipeline['Lab_items_code']+'"');

« แก้ไขครั้งสุดท้าย: พฤษภาคม 02, 2012, 09:17:25 AM โดย realaerm »
---------------------------------------------------------
Mr. Sitichart  Wongyuttanapong
Inventory  Team
---------------------------------------------------------
Bangkok  Medical  Software  Co,.Ltd
---------------------------------------------------------

ออฟไลน์ nongtan

  • Full Member
  • ***
  • กระทู้: 106
  • Respect: +1
    • ดูรายละเอียด
Re: แปลงstringเป็นinteger
« ตอบกลับ #2 เมื่อ: พฤษภาคม 02, 2012, 09:42:18 AM »
0
คือผมอยากจะลองแปลง stringเป็น integer ครับ โดยจะลองกับ lab_order_result ซึ่งเก็บ เป็น string
หรือว่ามีวิธีอื่นในการจะตรวจสอบว่าผล Lab ผิดปกติหรือไม่ (จะเปรียบเทียบผลlabกับ field range_check_min,range_check_max,range_check_min_female,range_check_max_female)  เท่าที่ทราบตรง field  abnormal_result="Y" เอามาเช็คไม่ได้ครับ เพี้ยนหมด
ชญานนท์ ร.พ. จิตเวชสงขลาราชนครินทร์
Master(กำลังปลด) : DELL  Ram 32GB HDD-SATA CentOS7MariaDB+TokuDB 10.1.14
Slave1 : HP Ram 8 GB CentOS7 MariaDB+TokuDB 10.1.14
Slave2 : Lenovo Ram 32GB HDD-SAS 400GB 4ลูก  CentOS7  กำลังลง MariaDB+TokuDB แต่ยังไม่ผ่าน
ขึ้นระบบโดย BMS Team เมื่อ 18พ.ค.52
HOSXP 3.

ออฟไลน์ woravet

  • Sr. Member
  • ****
  • กระทู้: 414
  • Respect: +12
    • ดูรายละเอียด
Re: แปลงstringเป็นinteger
« ตอบกลับ #3 เมื่อ: พฤษภาคม 02, 2012, 12:35:13 PM »
0
select lh.vn,lo.lab_items_code,l1.lab_items_name
,lo.lab_order_result
,if(l1.range_check_min is null,' '
,if(lo.lab_order_result between l1.range_check_min and l1.range_check_max,' ','Y'))
'result'
,l1.range_check_min,l1.range_check_max
from lab_head lh
left join lab_order lo on lo.lab_order_number=lh.lab_order_number
left join lab_items l1 on l1.lab_items_code=lo.lab_items_code
where lh.order_date between "2012-02-01" and "2012-02-01"
รพ.บึงสามัคคี จ.กำแพงเพชร
*********************
อ.สุชัยและคณะ ขึ้นระบบ 29 ตค.49(Linux+Fedara 5)
*********************
ปัจจุบัน
HOSxP version 3.53.4.27
Server:Windows XP SP2,MySQL 5
Client ประมาณ 15 เครื่อง

ออฟไลน์ nongtan

  • Full Member
  • ***
  • กระทู้: 106
  • Respect: +1
    • ดูรายละเอียด
Re: แปลงstringเป็นinteger
« ตอบกลับ #4 เมื่อ: พฤษภาคม 03, 2012, 11:00:41 AM »
0
ตกลง ตัวแปร string กับ ตัวแปร Double มันเปรียบเทียบกันได้หรือครับ ???  ตกลงผมทำแบบนี้ครับ(ลืมเรื่องทศนิยมไปก่อน)
SELECT lh.hn,concat(p.pname,p.fname," ",p.lname) as pname,lg.lab_items_group_name,l1.lab_items_name,
lo.lab_order_result,l1.range_check_min,l1.range_check_max,
CONVERT(REPLACE(trim(lo.lab_order_result),',',''),UNSIGNED  integer) as num1,
o.name as reportname,concat(lh.report_date," ",lh.report_time) as reporttime
from lab_head lh
left outer join lab_order lo on lo.lab_order_number=lh.lab_order_number
left outer join lab_items l1 on l1.lab_items_code=lo.lab_items_code
left outer join lab_items_group lg on lg.lab_items_group_code=l1.lab_items_group
left outer join patient p on p.hn=lh.hn
left outer join opduser o on o.loginname=lh.reporter_name
where lh.report_date between "2012-02-01" and "2012-02-02" and lo.lab_order_result<>"" and
((CONVERT(REPLACE(trim(lo.lab_order_result),',',''),UNSIGNED  integer))
not between l1.range_check_min  and  l1.range_check_max)
order by lh.report_date
ชญานนท์ ร.พ. จิตเวชสงขลาราชนครินทร์
Master(กำลังปลด) : DELL  Ram 32GB HDD-SATA CentOS7MariaDB+TokuDB 10.1.14
Slave1 : HP Ram 8 GB CentOS7 MariaDB+TokuDB 10.1.14
Slave2 : Lenovo Ram 32GB HDD-SAS 400GB 4ลูก  CentOS7  กำลังลง MariaDB+TokuDB แต่ยังไม่ผ่าน
ขึ้นระบบโดย BMS Team เมื่อ 18พ.ค.52
HOSXP 3.

ออฟไลน์ udomchok

  • Hero Member
  • *****
  • กระทู้: 8,358
  • Respect: +589
    • ดูรายละเอียด
    • ร.พ.สมเด็จพระสังฆราช องค์ที่ 17
Re: แปลงstringเป็นinteger
« ตอบกลับ #5 เมื่อ: กรกฎาคม 16, 2012, 01:54:57 AM »
0
ลองเอาตัวอย่างไปดูครับ
แต่ต้องกำหนดข้อมูลในตาราง lab_items ให้ถูกต้องด้วยนะครับ
รายการไหน ผลเป็นตัวเลก็ต้องไปติ๊กว่าเป็นตัวเลข แล้วใส่ range_check ต่าง ๆ ให้ถูกต้อง
ทำด้วยหัวใจร.พ.สมเด็จพระสังฆราช องค์ที่ 17 อ.สองพี่น้อง จ.สุพรรณบุรี
อบรมโดย BMS Team เมื่อ พ.ย. 49 ขึ้นระบบห้องบัตรเมื่อ X'Mas 2007
2008 : X-Ray กายภาพบำบัด แพทย์แผนไทย กิจกรรมบำบัด OPD ตา
2009 : ทันตกรรม ห้องตรวจตา OPD (พยาบาลและห้องตรวจแพทย์บางห้อง)

ออฟไลน์ nongtan

  • Full Member
  • ***
  • กระทู้: 106
  • Respect: +1
    • ดูรายละเอียด
Re: แปลงstringเป็นinteger
« ตอบกลับ #6 เมื่อ: กรกฎาคม 16, 2012, 14:52:45 PM »
0
ตาสว่างเลขครับ  คือว่าเจ้าหน้าที่ห้อง lab ไม่ได้ไประบุว่าเป็น ตัวเลขหรือตัวอักษร ทำให้ผล Lab ทั้งหมด เป็น string ครับ
ขอบคุณ อ.udomchok มากๆครับ
ชญานนท์ ร.พ. จิตเวชสงขลาราชนครินทร์
Master(กำลังปลด) : DELL  Ram 32GB HDD-SATA CentOS7MariaDB+TokuDB 10.1.14
Slave1 : HP Ram 8 GB CentOS7 MariaDB+TokuDB 10.1.14
Slave2 : Lenovo Ram 32GB HDD-SAS 400GB 4ลูก  CentOS7  กำลังลง MariaDB+TokuDB แต่ยังไม่ผ่าน
ขึ้นระบบโดย BMS Team เมื่อ 18พ.ค.52
HOSXP 3.