BMS-HOSxP Community

HOSxP => แจ้งปัญหา / ขอความช่วยเหลือ => ข้อความที่เริ่มโดย: nongtan ที่ พฤษภาคม 01, 2012, 16:54:22 PM

หัวข้อ: แปลงstringเป็นinteger
เริ่มหัวข้อโดย: nongtan ที่ พฤษภาคม 01, 2012, 16:54:22 PM
เนื่องจากตรงช่องผล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"
หัวข้อ: Re: แปลงstringเป็นinteger
เริ่มหัวข้อโดย: realaerm ที่ พฤษภาคม 02, 2012, 09:11:40 AM
เนื่องจากตรงช่องผล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']+'"');

หัวข้อ: Re: แปลงstringเป็นinteger
เริ่มหัวข้อโดย: nongtan ที่ พฤษภาคม 02, 2012, 09:42:18 AM
คือผมอยากจะลองแปลง 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" เอามาเช็คไม่ได้ครับ เพี้ยนหมด
หัวข้อ: Re: แปลงstringเป็นinteger
เริ่มหัวข้อโดย: woravet ที่ พฤษภาคม 02, 2012, 12:35:13 PM
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"
หัวข้อ: Re: แปลงstringเป็นinteger
เริ่มหัวข้อโดย: nongtan ที่ พฤษภาคม 03, 2012, 11:00:41 AM
ตกลง ตัวแปร 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
หัวข้อ: Re: แปลงstringเป็นinteger
เริ่มหัวข้อโดย: udomchok ที่ กรกฎาคม 16, 2012, 01:54:57 AM
ลองเอาตัวอย่างไปดูครับ
แต่ต้องกำหนดข้อมูลในตาราง lab_items ให้ถูกต้องด้วยนะครับ
รายการไหน ผลเป็นตัวเลก็ต้องไปติ๊กว่าเป็นตัวเลข แล้วใส่ range_check ต่าง ๆ ให้ถูกต้อง
หัวข้อ: Re: แปลงstringเป็นinteger
เริ่มหัวข้อโดย: nongtan ที่ กรกฎาคม 16, 2012, 14:52:45 PM
ตาสว่างเลขครับ  คือว่าเจ้าหน้าที่ห้อง lab ไม่ได้ไประบุว่าเป็น ตัวเลขหรือตัวอักษร ทำให้ผล Lab ทั้งหมด เป็น string ครับ
ขอบคุณ อ.udomchok มากๆครับ