2013-10-25 52 views
0

我有一個查詢:在PostgreSQL的查詢刪除逗號

SELECT phone, 
     to_char(appt_date,'MM/DD/YYYY'), 
     time_text, 
     staff_email || subject_line as title, 
     staff_wav, 
     agency_wav 
FROM phone_dialer 

發送到CSV文件

導致

 
9105554444,07/01/2011,08:30am,[email protected],staffid0827,Coastal Counseling 

 
9105554444,07/01/2011,08:30am,[email protected],staffid0827,Smith, Bob 

的「agency_wav」列可以有公司的名稱。我嘗試了幾種方法來消除史密斯和鮑勃之間的逗號,並且我很慘。

任何人都可以引導我解決?

+0

請澄清令人困惑的文字和[使用正確的格式](http://stackoverflow.com/help/formatting)。 –

回答

1

如果您使用語法COPY()TO STDOUT WITH CSV來包圍查詢;那麼它將構造CSV輸出並自動引用包含逗號的字段值。

如果您想在查詢中手動執行此操作,請嘗試替換(agency_wav,',','')。

1

的優選方法是使用COPY命令。

如果由於某種原因您不希望或不能使用它,您只需要在CSV列友好的列中返回值,並用雙引號將值括起來,並通過在字符串中複製它們來轉義現有的雙引號。這將保留正確的值(即所有逗號),但不會中斷CSV格式。

SELECT phone, 
     to_char(appt_date,'MM/DD/YYYY'), 
     time_text, 
     staff_email || subject_line as title, 
     staff_wav, 
     '"' || replace(agency_wav, '"', '""') || '"' 
FROM phone_dialer 

這將產生以下行

9105554444,07/01/2011,08:30am,[email protected],staffid0827,"Smith, Bob" 

注意引用值有逗號。