คำถามติดแท็ก string-searching

3
มันเรียกว่าอะไรเมื่อคุณค้นหาตรงกลางของสตริงแทนที่จะเป็นจุดเริ่มต้น
ฉันพยายามขัดคำศัพท์ของฉันเพื่อสื่อสารกับนักพัฒนาเพื่อนของฉันให้ดีขึ้น เรามีสถานที่หลายแห่งในเว็บไซต์ที่เรากำลังถกเถียงกันว่าเราควรค้นหาสตริงจากจุดเริ่มต้น'running%'เทียบกับตำแหน่งใด ๆ ในสตริง'%running%เทียบกับที่ใดก็ได้ในสตริง ฉันเรียกการค้นหากึ่งกลางว่า "ฟัสซี"ซึ่งฉันรู้ว่าไม่ถูกต้องเนื่องจากฟัซซี่หมายถึงการเปลี่ยนรูปแบบของคำว่า "รัน", "รัน" [sic], "รัน" [sic] คำศัพท์ที่ถูกต้องสำหรับการค้นหาจุดเริ่มต้นของสตริงและค้นหาตรงกลางของสตริงคืออะไร?

5
จับคู่ a] (ปิดวงเล็บเหลี่ยม) กับ PATINDEX โดยใช้สัญลักษณ์“ []”
ผมเขียนเอง JSON parser ใน T-SQL † สำหรับวัตถุประสงค์ในการแยกวิเคราะห์ฉันใช้PATINDEXฟังก์ชันที่คำนวณตำแหน่งของโทเค็นจากรายการโทเค็น โทเค็นในกรณีของฉันเป็นอักขระเดี่ยวทั้งหมดและรวมไว้ด้วย: {} []:, โดยปกติเมื่อฉันต้องการค้นหาตำแหน่ง (แรก) ของตัวละครที่กำหนดหลายตัวฉันจะใช้PATINDEXฟังก์ชั่นดังนี้: PATINDEX('%[abc]%', SourceString) ฟังก์ชั่นแล้วจะให้ฉันตำแหน่งแรกของaหรือbหรือc- SourceStringแล้วแต่จำนวนใดจะเกิดขึ้นจะพบแรก ตอนนี้ปัญหาในกรณีของฉันดูเหมือนจะเชื่อมต่อกับ]ตัวละคร ทันทีที่ฉันระบุไว้ในรายการตัวละครเช่นนี้ PATINDEX('%[[]{}:,]%', SourceString) ดูเหมือนว่ารูปแบบที่ฉันตั้งใจไว้จะพังเพราะฟังก์ชั่นไม่เคยพบคู่ที่ตรงกัน ดูเหมือนว่าฉันต้องการวิธีที่จะหลบหนีแรก]เพื่อให้PATINDEXถือว่าเป็นหนึ่งในตัวละครการค้นหามากกว่าสัญลักษณ์พิเศษ ฉันพบคำถามนี้ถามเกี่ยวกับปัญหาที่คล้ายกัน: ต้องการความช่วยเหลือกับตัวดำเนินการ LIKE และวงเล็บเหลี่ยม อย่างไรก็ตามในกรณีนั้น]ก็ไม่จำเป็นต้องระบุในวงเล็บเพราะมันเป็นเพียงหนึ่งตัวละครและมันสามารถระบุได้โดยไม่ต้องวงเล็บรอบพวกเขา โซลูชันทางเลือกซึ่งใช้การหลบหลีกใช้งานได้เฉพาะLIKEและไม่ได้ใช้PATINDEXเพราะใช้การย่อยESCAPEด้วยการสนับสนุนจากอดีตและไม่ใช่อย่างหลัง ดังนั้นคำถามของฉันคือมีวิธีการค้นหา]ด้วยการPATINDEXใช้[ ]สัญลักษณ์แทนหรือไม่ หรือมีวิธีจำลองการทำงานโดยใช้เครื่องมือ Transact-SQL อื่น ๆ หรือไม่? ข้อมูลเพิ่มเติม นี่คือตัวอย่างของแบบสอบถามที่ฉันต้องการใช้PATINDEXกับ[…]รูปแบบดังกล่าวข้างต้น รูปแบบที่นี่ใช้งานได้ (แม้ว่าจะค่อนข้าง ) เพราะมันไม่ได้รวม]ตัวละคร ฉันต้องการที่จะทำงานด้วย]เช่นกัน: WITH data AS (SELECT CAST('{"f1":["v1","v2"],"f2":"v3"}' AS varchar(max)) …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.