IN OPERATOR内部的解决方法

时间:2011-11-14 17:34:25

标签: sql oracle csv textpad

ALERT
ALERTING_TRANSACTION
ALERTING_TRANSACTION_LINK
ALERT_ACTION_LOG
ALERT_ALERT
ALERT_ASSIGNMENT
ALERT_CASE
ALERT_CUSTOMER
ALERT_DOCUMENT
ALERT_EXT
ALERT_MATCH
ALERT_MATCH_DATA
ALERT_RESTRICTION
ALERT_STATUS
ALERT_TRANSACTION
A_ALERT
A_ALERTING_TRANSACTION
A_ALERT_ACTION_LOG
A_ALERT_ASSIGNMENT
A_ALERT_CASE
A_ALERT_MATCH
A_ALERT_MATCH_DATA
AUDIT_LOGS
CASES
CASE_ACTION_LOG
CASE_CUSTOMER
CASE_DIARY
CASE_DOCUMENT
CASE_EXT
CASE_NARRATIVE
CASE_TRANSACTION
CHANNEL_SUBSCRIPTIONS
COUNTRY
CURRENCY
CUSTOMERS
CUSTOMERS_RANGE
CUSTOMER_AUDIT_LOG
CUSTOMER_PROFILE
CUSTOMER_STATUSES
CUSTOM_TRANSACTION_FIELD
DF_ACCOUNT
DF_ACTIVITY_TYPE
DF_ASSISTANCE_CONTACT
DF_AUTH_SIGN_PART
DF_CHECKBOX_FINTRAC
DF_CUSTOMER
DF_DISC
DF_DISCLOSURE_AUSTRAC_SMR
DF_DISCLOSURE_CANFINTRAC_31
DF_DISCLOSURE_LUXEMBOURGSTR
DF_DISCLOSURE_USFINCEN_109
DF_DISC_TYPE
DF_DISC_VERSION
DF_EFILE_BATCH
DF_FINTRAC_INSTITUTE
DF_HONGKONG_INSTITUTION
DF_INSTITUTION_AUSTRAC
DF_LAW_ENFORCEMENT_AGENCY
DF_NARRATIVE
DF_REGULATORY_CONTACT

我在文本文件中有这些记录。我想写一个像

这样的查询
SELECT TABLE_NAME FROM USER_TABLES WHERE TABLE_NAME NOT IN ('ALERT','ALERTING_TRANSACTION',.....,'DF_REGULATORY_CONTACT')

任何人都可以告诉我如何在每个表名周围添加''并将table_names分隔,在IN OPERATOR中,因为表的列表非常长。

2 个答案:

答案 0 :(得分:2)

使用您喜欢的文本编辑器将'begin begin(正则表达式中的^)替换为'和line end($ in in regular expression)with',.删除最后一个,你有一个列表放在()。

修改

如果你最喜欢的文本编辑器不支持正则表达式,请选择一个。即使你继续使用你最喜欢的文本编辑器来支持日常文本编辑的正则表达式,这对你的工具列表来说也是很好的补充(对于这样的一个关闭)。

答案 1 :(得分:2)

如果在文本文件中有表列表,您可能会发现将文本文件加载到临时表并更改IN语句以使用子查询引用值更容易。

如果您只想快速构建IN字符串,可以使用正则表达式添加分隔符。

\n替换为',\n'