เรากำลังใช้ซอฟต์แวร์นั้นมีจำกัดสิทธิ์ความสามารถในการ. ฉันต้องการให้ตัวกรองผ่าน CLOB สนามโดยทำให้มั่นใจว่ามันเป็นเฉพาะเจาะจมูลค่าอยู่ ตามปกติข้างนอกของซอฟท์แวร์ตัวนี้ฉันจะทำอะไรอย่าง:
DBMS_LOB.SUBSTR(t.new_value) = 'Y'
อย่างไรก็ตามนี่ไม่ใช่การรองรับดังนั้นฉันพยายามจะใช้ CAST
แทน ฉันพยายามหลายต่างพยายามแต่ตอนนี้นี่คือสิ่งที่ฉันพบ:
ซอฟท์แวร์ตัวนี้มีสร้าง query checker/ตัวตรวจความถูกต้องและเหล่านี้เป็นตัวเดียวกันกับที่มันแสดงที่ไม่ถูกต้อง:
DBMS_LOB.SUBSTR(t.new_value)
CAST(t.new_value AS VARCHAR2(10))
CAST(t.new_value AS NVARCHAR2(10))
อย่างไรก็ตามที่ตัวตรวจความถูกต้องนั่งยอมรับพวกนี้:
CAST(t.new_value AS VARCHAR(10))
CAST(t.new_value AS NVARCHAR(10))
CAST(t.new_value AS CHAR(10))
โชคร้ายถึงแม้ว่างที่ตัวตรวจความถูกต้องปล่อยให้พวกคนที่ผ่านไปตอนงานกับการค้นหาจะเรียกข้อมูลของฉันเข้าใจ ORA-22835: Buffer too small
เมื่อใช้ VARCHAR
หรือ NVARCHAR
. และฉันเข้าใจ ORA-25137: Data value out of range
เมื่อใช้ CHAR
.
มีวิธีอื่นอีกฉันจะพยายามจะตรวจสอบว่าของฉัน CLOB สองมีเฉพาะค่าตอนที่กำลังกรองข้อมูล? ถ้าไม่ใช่ได้ยังไงฉันซ่อมของปัจจุบันปัญหา?
DBMS_LOB.SUBSTR()
ดังนั้นฉันจึงไม่สามารถใช้มัน. ฉันคิดว่าCAST
เป็นสามารถตัดข้อความเพราะว่าเรายังต้องใช้สำหรับ workaroundTRUNC
:CAST(CAST(date_field AS VARCHAR(9)) AS DATE)
และมันได้ผล มันจะจัดการเวลาส่วน. ฉันหวังว่าเราสามารถ\ทำอะไรบางอย่างที่คล้ายกันสำหรับเรื่องนี้