ฟังก์ชัน VALUEIN ER
ฟังก์ชัน VALUEIN
กำหนดว่าการป้อนข้อมูลที่ระบุที่ตรงกับค่าใดๆ ของสินค้าที่ระบุในรายการที่ระบุหรือไม่ จะส่งกลับค่า บูลีน ของ TRUE ถ้าอินพุตที่ระบุตรงกับผลลัพธ์ของการเรียกใช้นิพจน์ที่ระบุสำหรับอย่างน้อยหนึ่งเรกคอร์ดของรายการที่ระบุ มิฉะนั้น จะส่งคืนค่า บูลีน เป็น เท็จ
ไวยากรณ์
VALUEIN (input, list, list item expression)
อาร์กิวเมนต์
input
: ฟิลด์
พาธที่ถูกต้องของรายการแหล่งข้อมูลของชนิด รายการเรกคอร์ด ค่าของรายการนี้จะถูกจับคู่กัน
list
: รายการเรกคอร์ด
พาธที่ถูกต้องของรายการแหล่งข้อมูลของชนิดข้อมูล รายการเรกคอร์ด
list item expression
: บูลีน
นิพจน์ที่มีเงื่อนไขที่ถูกต้องที่ชี้ไป หรือประกอบด้วยฟิลด์เดียวของรายการที่ระบุที่ควรจะใช้สำหรับการจับคู่กัน
ค่าที่ส่งคืน
บูลีน
ค่า บูลีน ที่เป็นผลลัพธ์
บันทึกย่อการใช้งาน
โดยทั่วไป ฟังก์ชัน VALUEIN
จะถูกแปลเป็นชุดเงื่อนไข OR หากรายการเงื่อนไข หรือ มีขนาดใหญ่และเกินความยาวรวมสูงสุดของคำสั่ง SQL ให้ลองพิจารณาการใช้ฟังก์ชัน VALUEINLARGE
(input = list.item1.value) OR (input = list.item2.value) OR …
ในบางกรณีสามารถแปลเป็นคำสั่ง SQL ฐานข้อมูลโดยใช้ตัวดำเนินการ EXISTS JOIN
หมายเหตุ
ค่าที่ฟังก์ชัน VALUEIN
ส่งคืน ถูกใช้แตกต่างกัน ขึ้นอยู่กับว่าฟังก์ชันนี้ใช้ในการระบุเงื่อนไขการเลือกให้กับฟังก์ชัน FILTER
หรือฟังก์ชัน WHERE
ตัวอย่างที่ 1
ในการแม็ปแบบจำลองของคุณ คุณสามารถกำหนดแหล่งข้อมูล รายการ ของชนิด ฟิลด์ที่มีการคำนวณ แหล่งข้อมูลนี้ประกอบด้วยนิพจน์ SPLIT ("a,b,c", ",")
เมื่อแหล่งข้อมูลถูกเรียก ถ้ามีการกำหนดค่าเป็นนิพจน์ VALUEIN ("B", List, List.Value)
จะส่งกลับเป็น TRUE ในกรณีนี้ ฟังก์ชัน VALUEIN
จะถูกแปลเป็นชุดของเงื่อนไขต่อไปนี้: (("B" = "a") or ("B" = "b") or ("B" = "c"))
, where ("B" = "b")
equals TRUE
เมื่อแหล่งข้อมูลถูกเรียก ถ้ามีการกำหนดค่าเป็นนิพจน์ VALUEIN ("B", List, LEFT(List.Value, 0))
จะส่งกลับเป็น FALSE ในกรณีนี้ ฟังก์ชัน VALUEIN
จะถูกแปลเป็นเงื่อนไขต่อไปนี้: ("B" = "")
ซึ่งไม่เท่ากับ TRUE
ขีดจำกัดสูงสุดสำหรับจำนวนของอักขระในข้อความของเงื่อนไขดังกล่าวคือ 32,768 อักขระ ดังนั้น คุณไม่ควรสร้างแหล่งข้อมูลที่อาจมีขนาดเกินขีดจำกัดนี้ขณะใช้งานจริง ถ้าเกินขีดจำกัด แอปพลิเคชันจะหยุดทำงาน และจะแสดงข้อยกเว้น ตัวอย่างเช่น สถานการณ์นี้อาจเกิดขึ้น ถ้ามีการกำหนดค่าแหล่งข้อมูลเป็น WHERE (List1, VALUEIN (List1.ID, List2, List2.ID)
และรายการ List1 and List2 ประกอบด้วยเรกคอร์ดจำนวนมาก
ในบางกรณี ฟังก์ชัน VALUEIN
ถูกแปลเป็นคำสั่งฐานข้อมูล โดยใช้ตัวดำเนินการ EXISTS JOIN
ลักษณะการทำงานนี้เกิดขึ้นเมื่อการใช้ฟังก์ชัน FILTER
และเป็นไปตามเงื่อนไขต่อไปนี้:
- ตัวเลือก ขอการสอบถาม ถูกปิดใช้งานสำหรับแหล่งข้อมูลของฟังก์ชัน
VALUEIN
ที่อ้างอิงถึงรายการของเรกคอร์ด ไม่มีการใช้เงื่อนไขเพิ่มเติมกับแหล่งข้อมูลนี้ในช่วงรันไทม์ - ไม่มีนิพจน์แบบซ้อนถูกตั้งค่าคอนฟิกสำหรับแหล่งข้อมูลของฟังก์ชัน
VALUEIN
ที่อ้างอิงถึงรายการของเรกคอร์ด - สินค้าในรายการของฟังก์ชัน
VALUEIN
อ้างถึงฟิลด์ของแหล่งข้อมูลที่ระบุ ไม่ใช่นิพจน์หรือวิธีการของแหล่งข่อมูลนั้นๆ
พิจารณาการใช้ตัวเลือกนี้แทนฟังก์ชัน WHERE
ที่อธิบายไว้ก่อนหน้านี้ในตัวอย่างนี้
ตัวอย่างที่ 2
คุณกำหนดแหล่งข้อมูลต่อไปนี้ในการแม็ปแบบจำลองของคุณ:
- แหล่งข้อมูล In ของชนิด เรกคอร์ดตาราง แหล่งข้อมูลนี้อ้างถึงตาราง Intrastat
- แหล่งข้อมูล Port ของชนิด เรกคอร์ดตาราง แหล่งข้อมูลนี้อ้างถึงตาราง IntrastatPort
เมื่อแหล่งข้อมูลถูกเรียกว่าถูกตั้งค่าคอนฟิกเป็นนิพจน์ FILTER (In, VALUEIN(In.Port, Port, Port.PortId)
คำสั่ง SQL ต่อไปนี้จะถูกสร้างขึ้นเพื่อส่งคืนเรกคอร์ดที่มีการกรองข้อมูลของตารางอินทราสแทต
select … from Intrastat
exists join TableId from IntrastatPort
where IntrastatPort.PortId = Intrastat.Port
สำหรับฟิลด์ dataAreaId คำสั่ง SQL ขั้นสุดท้ายจะถูกสร้างขึ้นโดยการใช้ตัวดำเนินการ IN
ตัวอย่างที่ 3
คุณกำหนดแหล่งข้อมูลต่อไปนี้ในการแม็ปแบบจำลองของคุณ:
- แหล่งข้อมูล Le ของชนิดของ ฟิลด์ที่มีการคำนวณ แหล่งข้อมูลนี้ประกอบด้วยนิพจน์
SPLIT ("DEMF,GBSI,USMF", ",")
- แหล่งข้อมูล In ของชนิด เรกคอร์ดตาราง แหล่งข้อมูลนี้อ้างถึงตารางอินทราสแทต และตัวเลือก ระหว่างบริษัท ถูกเปิดใช้งาน
เมื่อแหล่งข้อมูลถูกเรียกว่าถูกตั้งค่าคอนฟิกเป็นนิพจน์ FILTER (In, VALUEIN (In.dataAreaId, Le, Le.Value)
คำสั่ง SQL ขั้นสุดท้ายประกอบด้วยเงื่อนไขต่อไปนี้
Intrastat.dataAreaId IN ('DEMF', 'GBSI', 'USMF')