Thep Excel

CONTAINSSTRINGฟังก์ชันค้นหาข้อความใน DAX

CONTAINSSTRING ตรวจสอบว่าข้อความหนึ่งมีข้อความอื่นเป็นส่วนหนึ่งหรือไม่ แล้วคืนค่า TRUE หรือ FALSE ตัวเลือกนี้ไม่สนใจตัวพิมพ์ใหญ่เล็ก

fx
=CONTAINSSTRING(<within_text>, <find_text>)

ความนิยม6/10
ความยาก3/10
ประโยชน์6/10

อัปเดต 14 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด คำอธิบาย
within_text Text/String ข้อความที่ต้องการค้นหาภายใน (สามารถเป็นคอลัมน์ข้อมูลหรือข้อความค่าคงที่)
find_text Text/String ข้อความที่ต้องการค้นหา รองรับ ? (ตัวอักษรเดียว) และ * (หลายตัวอักษร) ใช้ ~? และ ~* เพื่อจับตัวพิมพ์หลายเหลี่ยมตามตัวอักษร

Additional Notes

ในโลกแห่งข้อมูล บางครั้งเราต้องการรู้ว่าข้อความหนึ่งซ่อนข้อความอีกข้อความอยู่ข้างในหรือเปล่า เช่น กำหนดลูกค้าที่มีคำว่า “ส่วนลด” ในความคิดเห็น หรือหาสินค้าที่มีคำว่า “organic” ในรายละเอียด นั่นคือจุดมุ่งหมายของ CONTAINSSTRING

ที่เจ๋งของฟังก์ชันนี้คือมันไม่สนใจตัวพิมพ์ใหญ่เล็ก ตัวอักษรอื่นๆ หรือความกว้างของตัวอักษร ดังนั้น “RED” “red” “rED” ทั้งหมดถูกมองว่าเหมือนกัน นอกจากนี้ยังรองรับ wildcard อีกด้วย ใช้ ? เพื่อจับตัวอักษรตัวเดียว และ * เพื่อจับหลายตัวอักษร

ส่วนตัวผม CONTAINSSTRING เหมาะที่สุดสำหรับการกรองข้อมูลแบบ dynamic ใช้กับ CALCULATE หรือ FILTER เพื่อสร้างการวิเคราะห์ที่ตอบสนองต่อข้อเสนอแนะลูกค้าหรือคุณลักษณะสินค้า

Examples

ตัวอย่างพื้นฐาน: ตรวจสอบคำในคอลัมน์คำอธิบายสินค้าHas Organic = CONTAINSSTRING( Products[Description], "organic" )

สร้างคอลัมน์ที่ตรวจสอบว่าคำอธิบายสินค้าแต่ละชิ้นมีคำว่า "organic" เป็นส่วนหนึ่งหรือไม่ ค่าตอบสนองจะเป็น TRUE หรือ FALSE ตัวอักษรตัวพิมพ์ใหญ่เล็กไม่ส่งผลต่อผลลัพธ์

fx
Has Organic = CONTAINSSTRING( Products[Description], "organic" )

ผลลัพธ์TRUE (สินค้ามีคำว่า "organic") หรือ FALSE (ไม่มี)
ตัวอย่างการกรอง: หาคำว่า "discount" ในความคิดเห็นลูกค้าDiscount Mentions = CALCULATE( [Total Sales], FILTER( Feedback, CONTAINSSTRING( Feedback[Comment], "discount" ) ) )

รวมยอดขายเฉพาะลูกค้าที่ความคิดเห็นของพวกเขามีคำว่า "discount" ใช้ FILTER เพื่อตรวจสอบเงื่อนไขในแต่ละแถว แล้ว CALCULATE จะ aggregate ผลลัพธ์

fx
Discount Mentions =
CALCULATE(
[Total Sales],
FILTER(
Feedback,
CONTAINSSTRING( Feedback[Comment], "discount" )
)
)

ผลลัพธ์ยอดขายรวมจากเฉพาะลูกค้าที่พูดถึงส่วนลดในความคิดเห็น
ตัวอย่างขั้นสูง: ใช้ Wildcard เพื่อค้นหาสินค้า SKU ที่เริ่มต้นด้วย "PROD"Premium Products Count = CALCULATE( COUNTROWS( Products ), CONTAINSSTRING( Products[SKU], "PROD*" ) )

ใช้ wildcard * เพื่อจับ SKU ที่เริ่มต้นด้วย "PROD" แล้วตามด้วยตัวอักษรหรือตัวเลขใดๆ COUNTROWS นับจำนวนผลลัพธ์

fx
Premium Products Count =
CALCULATE(
COUNTROWS( Products ),
CONTAINSSTRING( Products[SKU], "PROD*" )
)

ผลลัพธ์จำนวนสินค้า SKU ที่เริ่มต้นด้วย "PROD" (เช่น PROD001 PROD002)

FAQs

CONTAINSSTRING แตกต่างจาก CONTAINSSTRINGEXACT อย่างไร?+

CONTAINSSTRING ไม่สนใจตัวพิมพ์ใหญ่เล็ก (case-insensitive) ส่วน CONTAINSSTRINGEXACT จะสนใจตัวพิมพ์และเป็นการค้นหาแบบแน่นอน "Red" ≠ "red" ใน CONTAINSSTRINGEXACT แต่เท่ากันใน CONTAINSSTRING

ใช้ Wildcard ได้อย่างไร?+

ใช้ ? สำหรับตัวอักษรเดียว (เช่น "r?d" จับ "red" "rad") และ * สำหรับหลายตัวอักษร (เช่น "r*d" จับ "red" "road" "rained") ถ้าต้องการค้นหา ? หรือ * อักษรตัวจริง ให้ใช้ ~? และ ~*

ฟังก์ชันนี้ใช้ในบริบท Row Context หรือ Filter Context?+

CONTAINSSTRING ทำงานในทั้งสองบริบท ถ้าใช้ในคอลัมน์ที่คำนวณแล้ว มันจะประเมินแต่ละแถว (row context) ถ้าใช้ใน CALCULATE ให้ modifier filter context

จะใช้กับช่อง NULL ได้ไหม?+

ถ้า within_text หรือ find_text เป็น NULL ผลลัพธ์จะเป็น NULL ต้องใช้ IF หรือ IFERROR เพื่อจัดการค่า NULL เช่น IFERROR( CONTAINSSTRING( …), FALSE )

Resources & Related

ฟังก์ชันที่ผู้เขียนโยงไว้กับ CONTAINSSTRING จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง

ฟังก์ชันนี้CONTAINSSTRINGInformation
Filter (2)
CALCULATE

CALCULATE เป็นฟังก์ชันหลักที่สำคัญที่สุดใน DAX ใช้สำหรับ evaluate expression ภายใต้ filter context ที่ถูกปรับเปลี่ยน สามารถเพิ่มตัวกรองใหม่ ลบตัวกรองเดิม หรือแทนที่ filter ที่มีอยู่ได้ รองรับทั้ง Boolean expression และ table expression เป็น filter arguments พร้อม filter modifier functions เช่น REMOVEFILTERS, ALL, ALLEXCEPT, KEEPFILTERS เพื่อควบคุมการกรองอย่างละเอียด มีพฤติกรรมพิเศษคือ context transition ที่เปลี่ยน row context เป็น filter context โดยอัตโนมัติ ทำให้เป็นเครื่องมือหลักในการสร้าง measure ที่ซับซ้อนและ calculated column ที่ต้องใช้ aggregation

FILTER

FILTER ใช้กรองแถวในตารางตามเงื่อนไขที่ซับซ้อน โดยวนลูปทุกแถวและประเมินเงื่อนไข เหมาะกับการกรองด้วย Measure หรือ Expression ซึ่ง Boolean Expression ทำไม่ได้ แต่ต้องระวังเรื่อง Performance เพราะเป็น Iterator Function ที่ช้ากว่า Boolean Expression ดังนั้นควรใช้เฉพาะเมื่อจำเป็น และอย่าใช้ FILTER กับ RELATED เพื่อกรองข้ามตาราง ให้กรองที่ Dimension Table โดยตรงแทน

Text (2)
FIND

FIND คืนค่าตำแหน่งเริ่มต้นของ FindText ภายใน WithinText (เริ่มนับที่ 1) โดยค้นหาแบบแยกตัวพิมพ์ใหญ่/เล็ก และสามารถระบุ StartNum/NotFoundValue เพื่อควบคุมจุดเริ่มค้นหาและผลลัพธ์เมื่อไม่พบได้

SEARCH

SEARCH คืนค่าตำแหน่งเริ่มต้นของข้อความที่ค้นหา (ค้นหาแบบไม่สนตัวพิมพ์) หากไม่พบจะเกิดข้อผิดพลาด สามารถใช้กับ IFERROR หรือ COALESCE เพื่อจัดการกรณีไม่พบ

Information (1)
CONTAINSSTRINGEXACT

CONTAINSSTRINGEXACT ใช้สำหรับการวิเคราะห์ข้อมูล DAX

Comments

อีเมลของคุณจะไม่ถูกเผยแพร่