2016-11-16 74 views
0

我想選擇幾個字段並將它們放在引號中,因爲我必須將這些記錄導出到平面文件中,然後將它們插入到另一個數據庫中。所以我在Oracle上運行這些查詢,並且在嘗試添加這些引號時遇到問題。這是我試圖運行查詢:如何選擇引號內的字段?

SELECT 
    'connection_string' || '|' || 
    ''' || employee_name || ''' 
FROM 
    table1 

而且我想輸出是:

'connection_string'|'Bob' 
'connection_string'|'Jane' 

我也試過

SELECT 
    'connection_string' || '|' || 
    '' || employee_name || '' 
FROM 
    table1 

這顯然不工作。 connection_string是靜態的並且保持不變,並且結果應該由管道分隔

回答

2

你只是在輸出中尋找單引號?如果是這樣的:

SELECT '''' || 'connection_string' || '''|''' || 
     employee_name || '''' 
FROM table1; 

兩個單引號在一排 - 在一個字符串 - 代表一個單引號。或者換句話說,您需要連續四個字符串,以便使用單個單引號:

'''' 
^ starts the string 
-^^ the single quote 
---^ ends the string 
+0

哈,那樣做了。所以在4個引號中,第二個引用的目的是什麼? – simplycoding

+0

quuote one說一個字符串的開始,引用二是逃避第三個引號,這是你正在尋找的第四個引號,第四個是結束字符串。 –

+0

@simplycoding - 做到了?在我的機器上,它給出了一個錯誤信息(出於一個顯而易見的原因:''''''''''是不正確的 - 它只產生一個字符串,只有一個字符,一個單引號,然後管道符號在任何引號之外,然後是單引號的另一個單字符字符串)。 – mathguy

0

您的意思是這樣的嗎?使用SCOTT模式中的EMP表。

select ename, '''connection_string''|''' || ename || '''' 
from scott.emp; 

ENAME  '''CONNECTION_STRING''|'''||ENAM 
---------- -------------------------------- 
SMITH  'connection_string'|'SMITH' 
ALLEN  'connection_string'|'ALLEN' 
WARD  'connection_string'|'WARD' 
JONES  'connection_string'|'JONES' 
MARTIN  'connection_string'|'MARTIN' 
BLAKE  'connection_string'|'BLAKE' 
CLARK  'connection_string'|'CLARK' 
SCOTT  'connection_string'|'SCOTT' 
KING  'connection_string'|'KING' 
TURNER  'connection_string'|'TURNER' 
ADAMS  'connection_string'|'ADAMS' 
JAMES  'connection_string'|'JAMES' 
FORD  'connection_string'|'FORD' 
MILLER  'connection_string'|'MILLER' 
0

Anoter方式可以使用Q syntax

SQL> with tableA(a) as (
    2 select 'aaa' from dual union all 
    3 select 'AAA' from dual 
    4 ) 
    5 select q'[Your string ']' || a || q'[']' as A 
    6 from tableA; 

A 
----------------- 
Your string 'aaa' 
Your string 'AAA' 

在這種情況下,它可能是一個有點多餘,但它可以在更復雜的情況下非常有用。