1s 8 คล้ายกันในคำขอ คล้ายกับเงื่อนไขการสืบค้น การใช้โอเปอเรเตอร์ "like"

มาดูวัตถุประสงค์และการใช้ตัวดำเนินการแบบมีเงื่อนไขกัน ชอบ(อังกฤษชอบ)ในภาษาคิวรี 1C ในตัวอย่าง

ผ่านอย่างรวดเร็ว

วัตถุประสงค์

ตรวจสอบว่าค่าสตริงในคำขอตรงกับรูปแบบที่ระบุหรือไม่ - ส่งกลับค่าบูลีน (TRUE หรือ FALSE)

  • เช็คไม่ขึ้นอยู่กับตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
  • แบบสอบถามใช้ดัชนีตาราง—ไม่เกี่ยวข้องกับดัชนีการค้นหาข้อความแบบเต็ม
  • อาจใช้เวลานานจึงจะเสร็จสมบูรณ์ด้วยโต๊ะขนาดใหญ่
  • ควรแปลงสตริงที่มีความยาวไม่จำกัดโดยใช้ฟังก์ชัน SUBSTRING

สถานที่ใช้งาน

  • ในแง่ของตัวดำเนินการ WHERE
  • ในเงื่อนไขการออกแบบ ทางเลือกเมื่อ<>จากนั้น "" ELSE "" สิ้นสุด
  • ในฟิลด์การเลือก (ตัวอย่างเช่น: ชื่อ LIKE &ParameterSimilar to StringSuitable)

คำอธิบายไวยากรณ์ของตัวดำเนินการ LIKE

พารามิเตอร์ตัวดำเนินการต้องเป็นสตริง โดยสามารถระบุเป็นค่าคงที่ หรือส่งผ่านเป็นพารามิเตอร์คำขอได้

ตัวอักษร (มาสก์) ที่แสดงด้านล่างสามารถใช้ร่วมกันหรือแยกกันได้

ข้อกำหนดสตริงที่แน่นอน

เลือก 10 อันดับแรก
คีย์.ชื่อ
จาก
Directory.Keys AS คีย์
ที่ไหน
Keys.Name คล้ายกับ "1" // เทียบเท่ากับ Keys.Name ="1"

ผลลัพธ์:

% เป็นความหมายตามตัวอักษรของจำนวนอักขระใดๆ ก็ตาม

เลือก 10 อันดับแรก
คีย์.ชื่อ
จาก
Directory.Keys AS คีย์
ที่ไหน
คีย์ชื่อ LIKE "%"

ผลลัพธ์: อะไรก็ได้ 10 รายการ

_ (ขีดล่าง): จับคู่ตัวอักษรตัวใดตัวหนึ่ง

ตัวอย่าง #1:

เลือก 10 อันดับแรก
คีย์.ชื่อ
จาก
Directory.Keys AS คีย์
ที่ไหน
คีย์ชื่อ LIKE "_"

ตัวอย่าง #2:เริ่มต้นด้วยอักขระใดๆ ตามด้วย “1” แล้วตามด้วยอักขระใดๆ

เลือก 10 อันดับแรก
คีย์.ชื่อ
จาก
Directory.Keys AS คีย์
ที่ไหน
คีย์ ชื่อคล้ายกับ "_1%"

ผลลัพธ์:

(อักขระหนึ่งตัวขึ้นไปในวงเล็บเหลี่ยม)

  • แต่ละตัวอักษรที่ตรงกับอักขระตัวใดตัวหนึ่งจะถูกใช้เป็น OR
    เป็นที่ยอมรับได้ในการระบุช่วง เช่น a-z,0-5 ซึ่งหมายถึงอักขระที่กำหนดเองจากช่วงที่ระบุ

ตัวอย่าง

เลือก 10 อันดับแรก
คีย์.ชื่อ
จาก
Directory.Keys AS คีย์
ที่ไหน
คีย์ชื่อคล้ายกับ "[l]%"

ผลลัพธ์: 10 เริ่มต้นด้วย "l" หรือ "z"

ตัวอย่าง:เริ่มด้วย 5,6,7

เลือก 10 อันดับแรก
คีย์.ชื่อ
จาก
Directory.Keys AS คีย์
ที่ไหน
คีย์ชื่อ LIKE "%"

ผลลัพธ์:

[^] (ในวงเล็บเหลี่ยมจะมีเครื่องหมายเลี่ยง ^ ตามด้วยอักขระหนึ่งตัวขึ้นไป)

เทียบเท่ากับอักขระใดๆ (_) ยกเว้นอักขระที่ระบุ ()

ตัวอย่าง

เลือก 10 อันดับแรก
คีย์.ชื่อ
จาก
Directory.Keys AS คีย์
ที่ไหน
Keys.Name SIMILAR เป็น "8.[^012]%"//ไม่รวม 8.0,8.1,8.2

ผลลัพธ์: ทั้งหมดเริ่มต้นด้วย "8" ยกเว้นที่ระบุไว้

SPECIAL CHARACTER - คำสั่งสำหรับระบุอักขระที่ลงทะเบียนข้างต้นในคำขอ

เนื่องจากเป็นสัญลักษณ์บริการ จึงอนุญาตให้ใช้อย่างน้อย: #,~,/,\

ตัวอย่าง:

เลือก 10 อันดับแรก
คีย์.ชื่อ
จาก
Directory.Keys AS คีย์
ที่ไหน
คีย์ชื่อ LIKE "#_" ตัวละครพิเศษ #"

ผลลัพธ์:

การบังคับใช้ในแพลตฟอร์ม

พารามิเตอร์ไม่ถูกต้อง LIKE<>

  • พารามิเตอร์ไม่ผ่าน ประเภทสตริง: เช่นตัวเลข 1 แทนที่จะเป็นสตริง "1"
  • ฟิลด์ประเภทที่ไม่ใช่สตริงจะถูกเปรียบเทียบกับมาสก์ที่ถูกต้อง (เช่น ลิงก์) หรือเมื่อเชื่อมต่อ ค่าจะไม่ได้รับการตรวจสอบสำหรับ IsNUL

โปรดใส่ใจกับข้อความแสดงข้อผิดพลาดที่คำถามปรากฏขึ้น:

คีย์ชื่อคล้ายกัน<>&ล

บางครั้งสถานการณ์เกิดขึ้นเมื่อใน 1C 8.3 หรือ 8.2 คุณต้องทำการเลือกเช่นจากไดเร็กทอรีขององค์ประกอบทั้งหมดที่มีคำว่า "เคลือบ" อยู่ในชื่อ หรือจากไดเรกทอรี ให้เลือกผู้รับเหมาทั้งหมดที่มีนามสกุลมีคำว่า "อีวาน" โดยทั่วไป ให้ตรวจสอบค่าสตริงบางส่วน

เพื่อจุดประสงค์นี้มีตัวดำเนินการใน 1C คำสั่ง 8.3 และ 8.2 - "คล้ายกัน" มันถูกใช้ตามลำดับภายใต้เงื่อนไขต่อไปนี้:

รับบทเรียนวิดีโอ 267 บทเรียนบน 1C ฟรี:

จะใช้เทมเพลตในแบบสอบถาม 1C ได้อย่างไร

ในการสร้างเงื่อนไขการเลือก คุณจะต้องส่งเทมเพลตบางตัวเป็นพารามิเตอร์ ในการสร้างเทมเพลตมีสิ่งที่เรียกว่าสัญลักษณ์บริการ

ตัวอย่างเช่น อักขระ "%" อนุญาตให้มีลำดับอักขระใดก็ได้:

มีอักขระพิเศษอื่น ๆ :

  • % (เปอร์เซ็นต์) - อนุญาตการเรียงลำดับอักขระตามอำเภอใจ
  • _ (ขีดล่าง) - อักขระเดี่ยวใดๆ
  • […] – อักขระหนึ่งตัวจากที่อยู่ในวงเล็บ นอกจากการแสดงรายการอักขระแล้ว คุณยังสามารถใช้ช่วงได้ ตัวอย่าง: a-o;
  • [^...] – เช่นเดียวกับอันก่อนหน้า แต่กลับกัน เครื่องหมาย "^" หมายถึงการปฏิเสธ

ผู้ดำเนินการ ชอบช่วยให้คุณสามารถเปรียบเทียบข้อมูลประเภทสตริงในการสืบค้นที่อยู่ทางด้านซ้ายของตัวดำเนินการกับข้อมูลประเภทสตริงที่อยู่ทางด้านขวาของตัวดำเนินการ ผลลัพธ์ของการเปรียบเทียบจะประเมินว่าเป็นจริงหรือเท็จ ดังนั้นการเปรียบเทียบสามารถใช้เป็นเงื่อนไขได้

สำหรับผู้ปฏิบัติงาน ชอบมีอักขระบริการพิเศษที่ไม่ถือเป็นสตริง:

  • สัญลักษณ์เปอร์เซ็นต์ "%": ระบุถึงจำนวนอักขระที่ต้องการในสตริง
  • "[...]" อักขระหนึ่งตัวขึ้นไปในวงเล็บเหลี่ยม: บ่งชี้ว่ามีอักขระใด ๆ ในรายการอยู่ นอกจากนี้ยังสามารถระบุช่วงของอักขระได้ (ตัวอย่าง)
  • ขีดล่าง "_": บ่งชี้ถึงการมีอยู่ของอักขระที่กำหนดเอง
  • อักขระปฏิเสธ "[^...]": หมายถึงการมีอยู่ของอักขระเดี่ยวใดๆ นอกเหนือจากที่ระบุไว้ในวงเล็บเหลี่ยม
หากคุณต้องการระบุอักขระพิเศษตัวใดตัวหนึ่งข้างต้นเพื่อเปรียบเทียบ คุณต้องใช้คีย์เวิร์ด "SPECIAL SYMBOL"

คุณสมบัติการใช้งานกับ DBMS ต่างๆ

ไอบีเอ็ม DB2"สามารถวางได้เฉพาะพารามิเตอร์ทางด้านขวาของตัวดำเนินการ SIMILAR อักขระตัวแทนเท่านั้นคือ "_" (ขีดล่างหมายถึงอักขระใดๆ) และ "%" (เปอร์เซ็นต์หมายถึงลำดับของอักขระใดๆ)
กรณีใช้ DBMS" PostgreSQL" หรือ " ฐานข้อมูลออราเคิล"อักขระพิเศษ "วงเล็บเหลี่ยม [...]" สามารถใช้ได้เฉพาะในกรณีที่ระบุไว้ในข้อความในคำขอ และจะไม่ส่งผ่านเป็นพารามิเตอร์ไปยังคำขอ

ดังนั้นในฐานข้อมูลไฟล์ อักขระพิเศษจะถูกรับรู้ในลักษณะเดียวกันเสมอ และแตกต่างกันขึ้นอยู่กับ DBMS ที่ใช้ในเวอร์ชันไคลเอ็นต์-เซิร์ฟเวอร์

ตัวอย่าง: เลือกผลิตภัณฑ์ที่มีสัญลักษณ์ "%" ในชื่อ

เลือก | Ref.Link |จาก | สารบบ ระบบการตั้งชื่อ HOW Ref | WHERE | Ref.Name เช่น "%\%" ตัวละครพิเศษ "\"

ตัวอย่าง เลือกสินค้าที่ชื่อขึ้นต้นด้วยคำว่า Tank

เลือก | Ref.Link |จาก | สารบบ ระบบการตั้งชื่อ HOW Ref | WHERE | ชื่อผู้อ้างอิงคล้ายกับ "Bak%"

ตัวอย่าง: เลือกผลิตภัณฑ์ที่มีชื่อลงท้ายด้วยตัวเลข

เลือก | Ref.Link |จาก | สารบบ ระบบการตั้งชื่อ HOW Ref | WHERE | ชื่อผู้อ้างอิงคล้ายกับ "%"

ตัวดำเนินการ SIMILAR ในแบบสอบถามจะตรวจสอบค่าสตริงจากตารางเพื่อดูว่ามีความคล้ายคลึงกับรูปแบบหรือไม่
มันถูกใช้ดังนี้: สตริงที่จะตรวจสอบจะถูกวางไว้ทางด้านซ้ายของโอเปอเรเตอร์นี้ และวางรูปแบบไว้ทางด้านขวา

หลังจากตรวจสอบแล้ว จะคืนค่า True หรือ False ดังนั้นจึงมีการใช้อย่างแข็งขันในเงื่อนไข
อักขระบริการต่อไปนี้ใช้เพื่อสร้างเทมเพลต:

  • % (เปอร์เซ็นต์) - ลำดับที่มีอักขระที่กำหนดเองจำนวนเท่าใดก็ได้
  • _ (ขีดล่าง) - อักขระหนึ่งตัว
  • […] (อักขระหนึ่งตัวขึ้นไปในวงเล็บเหลี่ยม) - อักขระเดี่ยวใด ๆ ที่อยู่ในวงเล็บเหลี่ยม
    ยกเว้นเช่นกัน ตัวละครต่างๆคุณสามารถใช้ช่วงได้ เช่น a-z(A-z) ซึ่งหมายความว่ามีอักขระใดๆ รวมอยู่ในช่วง รวมถึงจุดสิ้นสุดของช่วงด้วย
  • [^...] (ในวงเล็บเหลี่ยม เครื่องหมายลบตามด้วยอักขระหนึ่งตัวขึ้นไป) - อักขระเดี่ยวใดๆ นอกเหนือจากที่แสดงไว้หลังเครื่องหมายปฏิเสธ

สัญลักษณ์ที่เหลือจะถูกนำมาใช้ตามวัตถุประสงค์ที่ตั้งใจไว้
หากจำเป็นต้องส่งอักขระบริการตัวใดตัวหนึ่งข้างต้นเป็นสัญลักษณ์ จะต้องนำหน้าด้วย<Спецсимвол>. ตัวฉันเอง<Спецсимвол>(สัญลักษณ์ใด ๆ ที่เหมาะสม) ถูกกำหนดไว้ในข้อความเดียวกันหลังจากนั้น คำสำคัญสัญลักษณ์พิเศษ
ตัวอย่างเช่น รูปแบบ “%ABV[abvg]\_abv%” SPECIAL CHARACTER “\” หมายถึงสตริงย่อยที่ประกอบด้วยลำดับอักขระ:
ตัวอักษร ก; ตัวอักษร B; ตัวอักษร B; หนึ่งหลัก; หนึ่งในตัวอักษร a, b, c หรือ d; ขีดเส้นใต้; ตัวอักษร ก; ตัวอักษรข; ตัวอักษรโวลต์
นอกจากนี้ ลำดับนี้สามารถนำหน้าด้วยชุดอักขระที่กำหนดเองได้

ขั้นตอน เลือกข้อตกลงที่มีInNameText(mText)
//ในคำขอ เราจะใช้เทมเพลตเช่น "%" + mText + "%" Request = New Request; Query.SetParameter("ชื่อ", "%" + ข้อความ + "%"); Request.Text = "SELECT | Agreements. Link, | Agreements. Owner | FROM | Directory. Contracts of Counterparties AS Agreements | | WHERE | Agreements. Name SIMILAR & Name"; ผลลัพธ์ = Query.Run(); การเลือก = ผลลัพธ์เลือก (); รายงาน("ข้อตกลงที่มีอยู่ในชื่อ: " + mText + " มีคู่สัญญาดังต่อไปนี้"); ในขณะที่รายงานรอบ Selection.Next() ("คู่สัญญา: " + Selection.Owner + "; ข้อตกลง: " + Selection. Link EndIf; EndProcedure

43
NULL – ค่าที่หายไป อย่าสับสนกับค่าศูนย์! NULL ไม่ใช่ตัวเลข ไม่เท่ากับช่องว่าง การอ้างอิงว่างเปล่า หรือไม่ได้กำหนด NULL คือค่าที่สร้างประเภท เช่น มีประเภท NULL และค่าเดียวของประเภทนี้ โมฆะ... 26
ในการสร้างและดำเนินการสืบค้นไปยังตารางฐานข้อมูลในแพลตฟอร์ม 1C จะใช้วัตถุพิเศษของภาษาการเขียนโปรแกรมสืบค้น วัตถุนี้ถูกสร้างขึ้นโดยการเรียกโครงสร้างคำขอใหม่ สะดวกขอ... 18
บทความนี้นำเสนอเทคนิคที่เป็นประโยชน์เมื่อทำงานกับแบบสอบถาม 1C v.8.2 รวมถึงข้อมูลที่ไม่ค่อยทราบเกี่ยวกับภาษาของแบบสอบถาม ฉันไม่ได้พยายามให้คำอธิบายที่สมบูรณ์ของภาษาคิวรี แต่ต้องการให้อยู่เฉพาะใน... 12
ฉันต้องเผชิญกับงานเลือกเอกสารการชำระเงินทั้งหมดและจัดกลุ่มตามประเภทเอกสาร! เมื่อได้ดูที่อยู่อาศัยและบริการชุมชนและอินเทอร์เน็ตทั้งหมดแล้ว ฉันจึงตระหนักได้ วิธีง่ายๆ get Document type ไม่อยู่ในคำขอ: (ฉันต้อง...