แชร์ผ่าน


ฟังก์ชัน 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')

ทรัพยากรเพิ่มเติม

ฟังก์ชันตรรกะ

ฟังก์ชัน VALUEINLARGE