Text.Contains ใช้สำหรับตรวจสอบว่าข้อความที่กำหนด (text) มีข้อความย่อยที่ต้องการค้นหา (substring) อยู่ภายในหรือไม่ ส่งคืนค่า true หรือ false
| อาร์กิวเมนต์ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| text | text | ข้อความที่ต้องการค้นหา (สามารถเป็น null ได้) | |
| substring | text | ส่วนข้อความย่อยที่ต้องการค้นหาภายในข้อความแรก | |
| [comparer]ไม่บังคับ | function | Comparer.Ordinal (case-sensitive) | ฟังก์ชันเปรียบเทียบ เช่น Comparer.OrdinalIgnoreCase สำหรับการค้นหาแบบไม่สนใจตัวพิมพ์เล็กใหญ่ |
[ ] = อาร์กิวเมนต์ที่ไม่บังคับ
Text.Contains เป็นฟังก์ชันที่ใช้หาข้อความภายในข้อความอื่น โดยค่าเริ่มต้นจะพิจารณาความแตกต่างของตัวพิมพ์เล็กใหญ่ (case-sensitive) ซึ่งหมายความว่า “Hello” กับ “hello” ถือว่าต่างกัน
ที่เจ๋งคือ Text.Contains มีพารามิเตอร์ตัวเลือก (comparer) ที่ให้คุณเลือกว่าจะทำการเปรียบเทียบแบบไหน เช่น ไม่สนใจความแตกต่างของตัวพิมพ์เล็กใหญ่ได้ เหมาะสำหรับการกรองข้อมูลในตาราง เช่น ค้นหาสินค้า ค้นหาลูกค้า หรือตรวจสอบว่ารหัสข้อมูลมีอักขระที่ต้องการหรือไม่
ส่วนตัวผมมักใช้ Text.Contains ร่วมกับ Table.SelectRows เพื่อกรองแถวของตารางตามเงื่อนไขการค้นหาข้อความ วิธีนี้ทำให้การจัดการข้อมูลทั้งหมดง่ายขึ้นมาก 😎
กรองรายการสินค้าที่มีคำว่า "Discount" หรือ "Promotion" อยู่ในชื่อ
เช็คว่าชื่อไฟล์มีนามสกุล ".xlsx" หรือ ".csv" หรือไม่
ถ้าพบคำว่า "Apple" ในข้อความ ให้จัดอยู่ในหมวด "Fruit"
ข้อความ "Hello World" มีส่วน "Hello" อยู่ ดังนั้นคืนค่า true
ค้นหา "hello" (ตัวพิมพ์เล็ก) ในข้อความ "Hello World" ไม่พบเพราะ H ตัวพิมพ์ใหญ่ ดังนั้นคืนค่า false
ใช้ Comparer.OrdinalIgnoreCase เพื่อค้นหาแบบไม่สนใจตัวพิมพ์เล็กใหญ่ ดังนั้น "hello" พบใน "Hello World" และคืนค่า true
ใช้ Text.Contains กับ Table.SelectRows เพื่อกรองเฉพาะสินค้าที่รหัสมี "PROD" เท่านั้น
ค้นหาบัญชีที่มี "A-" หรือ "7" โดยไม่สนใจตัวพิมพ์เล็กใหญ่ ใช้ OR logic เพื่อค้นหาหลายเงื่อนไข
เหมือนกันบ้าง แต่ต่างกันตรงที่ FIND ของ Excel คืนค่าเป็นเลข (ตำแหน่งที่พบ) ขณะที่ Text.Contains คืนค่า true/false ถ้าต้องการตำแหน่ง ใน Power Query ให้ใช้ Text.PositionOf แทน
ไม่รองรับ Text.Contains ทำการค้นหาแบบตรงตัว (Literal) เท่านั้น ถ้าต้องการ Wildcard ลองใช้ Text.Match กับ Regular Expression แทน
Text.Contains จะคืนค่า null ถ้าพารามิเตอร์แรก (text) เป็น null ต่างจากการส่ง substring ที่เป็น null ซึ่งจะเกิด Error
Ordinal ใช้การเปรียบเทียบแบบตัวอักษรบริสุทธิ์ ส่วน FromCulture ใช้กฎการเปรียบเทียบของวัฒนธรรม/ภาษาที่กำหนด เช่นการจัดการตัวอักษรพิเศษในภาษาต่างๆ
เพราะ Table.SelectRows ต้องการให้ส่งค่า logical (true/false) เพื่อตัดสินใจว่าแถวไหนจะเก็บไว้ Text.Contains คืนค่า true/false พอดี ทำให้เป็นความเชื่อมโยงที่สมบูรณ์
ฟังก์ชันที่ผู้เขียนโยงไว้กับ Text.Contains จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
Text.EndsWith ตรวจสอบว่าข้อความหลักลงท้ายด้วยข้อความย่อย (substring) ที่กำหนดหรือไม่ คืนค่า true หากตรงกัน และ false หากไม่ตรงกัน สามารถใช้ Comparer เพื่อควบคุม Case Sensitivity
Text.Lower ใช้แปลงอักขระทั้งหมดในข้อความให้เป็นตัวพิมพ์เล็ก (lowercase) ช่วยให้ข้อมูลมีรูปแบบสอดคล้องกัน สามารถกำหนด Culture เพื่อให้การแปลงเป็นไปตามกฎของภาษาและภูมิภาคที่ต้องการ
หาตำแหน่งของข้อความย่อยในข้อความหลัก (0-indexed) โดยคืนค่า -1 หากไม่พบ
Text.PositionOfAny ใช้สำหรับค้นหาตำแหน่งแรกของอักขระใดๆ ในรายการที่ระบุ เป็นประโยชน์สำหรับการค้นหาเครื่องหมายพิเศษ สระ หรืออักขระที่ระบุ
กลับด้านข้อความ (Reverse String)
Text.StartsWith ตรวจสอบว่าข้อความหลักขึ้นต้นด้วยข้อความย่อยที่กำหนดหรือไม่ โดยคืนค่า true หรือ false สามารถระบุ Comparer เพื่อเลือกว่าจะให้ตรวจสอบแบบ Case Sensitive (ไว) หรือ Case Insensitive (ไม่ไว) ได้
Text.Upper แปลงอักขระทั้งหมดในข้อความเป็นตัวอักษรใหญ่ โดยรองรับการตั้งค่า culture ต่างๆ เพื่อจัดการการแปลงที่ถูกต้องตามภาษา
List.FindText ค้นหาสมาชิกในรายการที่มีข้อความย่อยที่กำหนด เหมาะเมื่อต้องการกรองข้อมูลไม่ใช่แค่ตรงแม่นทั้งคำ แต่ต้องการค้นหาแบบบางส่วนก็ได้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่