วิธีหลีกเลี่ยงการแทนที่ตัวแปรใน Oracle SQL Developer ด้วย 'trinidad & Tobago'


111

เมื่อฉันพยายามที่จะดำเนินการคำสั่งนี้ใน Oracle SQL Developer 2.1 กล่องโต้ตอบ"Enter แทนค่าตัวแปร"ปรากฏขึ้นขอค่าทดแทนสำหรับโตเบโก ,

update t set country = 'Trinidad and Tobago' where country = 'trinidad & tobago';

ฉันจะหลีกเลี่ยงสิ่งนี้ได้อย่างไรโดยไม่ต้องใช้chr(38)หรือu'trinidad \0026 tobago'ทั้งสองอย่างที่ปิดบังวัตถุประสงค์ของข้อความนี้


1
เป็นเรื่องแปลกเมื่อฉันพยายามเรียกใช้แบบสอบถามแบบนั้นใน SQL developer 2.1 ฉันไม่ได้รับหน้าต่างตัวแปรทดแทน? (และคำจำกัดความของฉันถูกตั้งค่าเป็นเปิดอย่างแน่นอนที่สุด)
wasatz

คำถามนี้ช่วยฉันได้มาก
โอ้ชินบุญ

คำตอบ:


192

เรียกสิ่งนี้ก่อนแบบสอบถาม:

set define off;

หรือแฮ็คกี้:

update t set country = 'Trinidad and Tobago' where country = 'trinidad &' || ' tobago';

จากTuning SQL * Plus :

SET DEFINE OFF ปิดใช้งานการแยกวิเคราะห์คำสั่งเพื่อแทนที่ตัวแปรการแทนที่ด้วยค่าของมัน


9
(อื่น ๆ ) set define off;ทำอะไร?
Xonatron

15

ใน SQL * Plus SET DEFINE ?ที่ด้านบนของสคริปต์จะแก้ปัญหานี้ได้ตามปกติ อาจใช้ได้กับ Oracle SQL Developer เช่นกัน


2
กำหนดนิยาม? ไม่ระงับพฤติกรรมการแทนที่ตัวแปรใน SQL Developer 2.1 ตามที่ระบุไว้โดย Nick SET DEFINE OFF ก็ใช้ได้เช่นกัน
Janek Bogucki

set define ใช้งานได้ แต่ DBA ไม่อนุญาตให้ใช้บางครั้งฉันไม่รู้ว่าทำไม
nikhil sugandh

1

สิ่งนี้จะทำงานตามที่คุณถามโดยไม่มี CHAR (38):

update t set country = 'Trinidad and Tobago' where country = 'trinidad & '|| 'tobago';

create table table99(col1 varchar(40));
insert into table99 values('Trinidad &' || '  Tobago');
insert into table99 values('Trinidad &' || '  Tobago');
insert into table99 values('Trinidad &' || '  Tobago');
insert into table99 values('Trinidad &' || '  Tobago');
SELECT * FROM table99;

update table99 set col1 = 'Trinidad and Tobago' where col1 = 'Trinidad &'||'  Tobago';

chr(38)คำถามของฉันคือวิธีนี้สามารถทำได้โดยไม่ต้องใช้
Janek Bogucki

@JanekBogucki แก้ไขเดี๋ยวนี้โดยไม่ต้องใช้ CHAR (38)
nikhil sugandh

ฉันให้คำตอบที่แตกต่างออกไปเนื่องจากคุณมีคำตอบที่เป็นสีเขียวอยู่แล้ว แต่คุณ
โหวตลง

Mate คุณนึกไม่ออกว่าคุณแก้ปัญหาอะไรให้ฉันนักพัฒนา sql ไม่ยอมรับ set define off เมื่อคุณเรียกใช้สคริปต์ นี่คือทางออกสำหรับฉัน
BrokenFrog

-3

ฉันก็มีปัญหาเกี่ยวกับเรื่องนี้เช่นกัน มีบางอย่างเริ่มต้นขึ้นทุกครั้งที่ฉันพยายามตั้งค่าการเชื่อมต่อกับฐานข้อมูลใด ๆ ..

สิ่งที่ได้ผลสำหรับฉันคือการลบสคริปต์เริ่มต้นที่คุณอาจกำหนดค่าไว้!

เช่นTools>Preferences...>Databaseและลบเส้นทางไฟล์ใด ๆ ที่คุณมีในกล่องข้อความที่มีชื่อว่า "ชื่อไฟล์สำหรับสคริปต์เริ่มต้นการเชื่อมต่อ"!


-3

ตั้งค่าการสแกน คำสั่งด้านบนยังใช้งานได้


สิ่งนี้ไม่ได้ให้คำตอบสำหรับคำถาม หากต้องการวิจารณ์หรือขอคำชี้แจงจากผู้เขียนโปรดแสดงความคิดเห็นไว้ด้านล่างโพสต์ของพวกเขาคุณสามารถแสดงความคิดเห็นในโพสต์ของคุณเองได้ตลอดเวลาและเมื่อคุณได้รับชื่อเสียงเพียงพอแล้วคุณจะสามารถแสดงความคิดเห็นในโพสต์ใดก็ได้ หากคุณมีคำถามที่เกี่ยวข้อง แต่แตกต่างกันให้ถามคำถามใหม่ที่อ้างถึงคำถามนี้หากจะช่วยให้บริบท
Rohan Khude
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.