tyson記事本

Google & man(Unix) are your best friends!

Skip to: Content | Sidebar | Footer

Oracle: 如何在 SQL 敘述中使用包含 & 字元的字串常數

2 January, 2007 (16:19) | Oracle | By: tyson

ref: http://www.cine.idv.tw/Learning/ComputerScience/Database/oracle/AppNotes/appnote-59824f555728-sql-65588ff04e2d4f7f75285305542b-5b57514376845b574e325e386578/

shortie 發現 TOAD 的 SQL Editor ,會把 ‘&’ 字元後的字串,當成變數名稱,造成無法直接將欄位之值,更新為包含 ‘&’ 字元的字串…

問題描述

INSERT INTO DTBDRG (
DRG_CODE, DRG_NHI_CODE, DRG_NAME, DRG_JD_FLAG,
DRG_SPEC, DRG_UNIT, DRG_CHARACTER, DRG_TEST_FLAG, DRG_BRAND)
VALUES (
'1CL100', 'A042448100', 'CLOPINE  100mg (Clozapine)    ', ' ',
'100mg  ', 'Tab   ', '   ', ' ', '瑞士[1.2.2.1&~2]');

在 TOAD 中無法執行。

解決方案

這嚴格說起來並不能算是 PL/SQL 問題,而是 TOAD 的 SQL Editor 模仿 SQL *PLUS 的行為,所導致的結果。
我們只要如 http://www.jlcomp.demon.co.uk/faq/litampersand.html 中所述般地,將字串拆成兩段,把 ‘&’ 字元放在第一段的最後一個位置即可。

也就是把上段 SQL ,做如下之修改即可完成更新的動作:

INSERT INTO DTBDRG (
DRG_CODE, DRG_NHI_CODE, DRG_NAME, DRG_JD_FLAG,
DRG_SPEC, DRG_UNIT, DRG_CHARACTER, DRG_TEST_FLAG, DRG_BRAND)
VALUES (
'1CL100', 'A042448100', 'CLOPINE  100mg (Clozapine)    ', ' ',
'100mg  ', 'Tab   ', '   ', ' ', '瑞士[1.2.2.1&' || '~2]');

這個問題在下面兩本書中,也可以找到相關說明:

1. Oracle PL/SQL Programming, Fourth Edition

2. Oracle SQL*Plus: The Definitive Guide, 2nd Edition

Write a comment





For spam filtering purposes, please copy the number 3728 to the field below: