2015-10-15 76 views
3

我有一个包含数据如下字符串:查找和甲骨文替换字符串

'ID,MASTER_ID,DATA_SOURCE_ID,DATA_SOURCE_NAME,CHILD_COUNT,CHILD_COUNT_TEXT,PARENT_OR_CHILD,RECORD_TYPE,FULL_NAME_LNF,FULL_NAME_FNF,FIRST_NAME,LAST_NAME,PREFIX,SUFFIX,MIDDLE,TITLE,NAME_OF_ORGANIZATION,NAME_OF_BUSINESS,TYPE_OF_ENTITY,ADDRESS,CITY,STATE,PROVINCE,POSTAL_CODE,COUNTRY,POSTAL_ADDRESS_TYPE,PHONE_AREA_CODE,PHONE_NUMBER,PHONE_COUNTRY_CODE,PHONE,PHONE_TYPE,EMAIL_ADDRESS,URL,HCP_SPECIALTY,HCP_TYPE,HCP_SUBTYPE,RECIPIENT_STATUS,COVERED_RECIPIENT_FLAG,RELATIONSHIP_TO_CR,LAST_MODIFIED_BY,LAST_MODIFIED_DATE,PRIMARY_LICENSE_STATE_AR,PRIMARY_LICENSE_NUM_AR,DEA_REG_NUM_AR,NPI_NUM_AR,UPIN_AR,TAX_PAYER_ID_AR,PRIMARY_LICENSE_STATE_CR,PRIMARY_LICENSE_NUM_CR,DEA_REG_NUM_CR,NPI_NUM_CR,UPIN_CR,DEA_NUMBER,NPI,UPIN,TIN,TAX_PAYER_ID_CR,ATTRIBUTE13,ATTRIBUTE14,ATTRIBUTE15,ATTRIBUTE16,ATTRIBUTE17,ATTRIBUTE18,ATTRIBUTE19,ATTRIBUTE20,ATTRIBUTE21,ATTRIBUTE22,ATTRIBUTE23,ATTRIBUTE24,ATTRIBUTE25,ATTRIBUTE26,ATTRIBUTE27,ATTRIBUTE28,ATTRIBUTE29,ATTRIBUTE30,SOURCE_REGION_CODE,SOURCE_SYSTEM_CODE,REC_INVALID_FLAG,REVISION_FLAG,IS_ACTIVE,PROCESS_STATE,RECIPIENT_CATEGORY01,RECIPIENT_CATEGORY02,RECIPIENT_CATEGORY03,RECIPIENT_CATEGORY04,RECIPIENT_CATEGORY05,RECIPIENT_CATEGORY06,RECIPIENT_CATEGORY07,RECIPIENT_CATEGORY08,RECIPIENT_CATEGORY09,RECIPIENT_CATEGORY10,RECIPIENT_CATEGORY11,RECIPIENT_CATEGORY12,RECIPIENT_CATEGORY13,RECIPIENT_CATEGORY14,RECIPIENT_CATEGORY15,RECIPIENT_CATEGORY16,RECIPIENT_CATEGORY17,RECIPIENT_CATEGORY18,RECIPIENT_CATEGORY19,RECIPIENT_CATEGORY20,RECIPIENT_CATEGORY21,RECIPIENT_CATEGORY22,RECIPIENT_CATEGORY23,RECIPIENT_CATEGORY24,RECIPIENT_CATEGORY25,RECIPIENT_CATEGORY26,RECIPIENT_CATEGORY27,RECIPIENT_CATEGORY28,RECIPIENT_CATEGORY29,RECIPIENT_CATEGORY30,IS_PICKABLE,IS_GOLDEN,PRIMARY_LICENSE_NUM,PRIMARY_LICENSE_EFFECTIVE,PRIMARY_LICENSE_EXPIRES,TERTIARY_LICENSE_EFFECTIVE,TERTIARY_LICENSE_EXPIRES,SECONDARY_LICENSE_EFFECTIVE,SECONDARY_LICENSE_EXPIRES,SECONDARY_LICENSE_NUM,TERTIARY_LICENSE_NUM,ADDRESS2,PHONE_AREA_CODE2,PHONE_NUMBER2,PHONE_COUNTRY_CODE2,PHONE_TYPE2,TERRITORY,PRIMARY_AFFILIATION,PRIMARY_AFFILIATION_STATE,REQUEST_WF_STATE,IS_EDIT_LOCKED,SOURCE_SYSTEM_RECIPIENT_ID,CREATED_BY,CREATION_DATE,APPROVER_COMMENTS,SECONDARY_LICENSE_STATE,PRIMARY_LICENSE_STATE,NPI_DATA,STATE_DATA,DEA_DATA,RPPS,FINESS,SIREN_NUMBER,DPC' 

可有人告诉我如何发现只有下列值

DATA_SOURCE_ID, 
     LAST_MODIFIED_BY, 
     LAST_MODIFIED_DATE, 
     ATTRIBUTE13, 
     ATTRIBUTE14, 
     ATTRIBUTE15, 
     ATTRIBUTE16, 
     ATTRIBUTE17, 
     ATTRIBUTE18, 
     ATTRIBUTE19, 
     ATTRIBUTE20, 
     ATTRIBUTE21, 
     ATTRIBUTE22, 
     ATTRIBUTE23, 
     ATTRIBUTE24, 
     ATTRIBUTE25, 
     ATTRIBUTE26, 
     ATTRIBUTE27, 
     ATTRIBUTE28, 
     ATTRIBUTE29, 
     ATTRIBUTE30, 

然后用替换它们以下字符串

'L.DATA_SOURCE_ID,L.LAST_MODIFIED_BY,L.LAST_MODIFIED_DATE,L.ATTRIBUTE13,L.ATTRIBUTE14,L.ATTRIBUTE15,L.ATTRIBUTE16,L.ATTRIBUTE17,L.ATTRIBUTE18,L.ATTRIBUTE19,L.ATTRIBUTE20,L.ATTRIBUTE21,L.ATTRIBUTE22,L.ATTRIBUTE23,L.ATTRIBUTE24,L.ATTRIBUTE25,L.ATTRIBUTE26,L.ATTRIBUTE27,L.ATTRIBUTE28,L.ATTRIBUTE29,L.ATTRIBUTE30,' 
+0

我看不到一个*数据库*如何有什么与此有关。如果你有一个字符串,并想查看字符串部分,使用*编程语言*来解析它。如果你在数据库表中有这个字符串,那么DBMS应该忽略它的部分和含义。另一方面,如果您希望数据库中的字符串内容,则不要将其存储为字符串,而应将其存储为单独的列。 –

回答

1

您正在寻找这一点。它给你你想要的结果

SELECT mycol, CONCAT('L.', mycol) AS newCol 
FROM(SELECT * FROM test WHERE mycol REGEXP 
'DATA_SOURCE_ID|LAST_MODIFIED_BY|LAST_MODIFIED_DATE|ATTRIBUTE[0-9]+') 
     as temp 

说明

SELECT * FROM test WHERE mycol REGEXP 
    'DATA_SOURCE_ID|LAST_MODIFIED_BY|LAST_MODIFIED_DATE|ATTRIBUTE[0-9]+') 

此发现,要么有DATA_SOURCE_IDLAST_MODIFIED_BYLAST_MODIFIED_DATEATTRIBUTE后跟任意数量的

SELECT mycol, CONCAT('L.', mycol) AS newCol 

这增加了所有行L.添加到所有具有b的行een由子查询找到。

输出

L.DATA_SOURCE_ID, 
L.LAST_MODIFIED_BY, 
L.LAST_MODIFIED_DATE, 
L.ATTRIBUTE13, 
L.ATTRIBUTE14, 
L.ATTRIBUTE15, 
L.ATTRIBUTE16, 
L.ATTRIBUTE17, 
L.ATTRIBUTE18, 
L.ATTRIBUTE19, 
L.ATTRIBUTE20, 
L.ATTRIBUTE21, 
L.ATTRIBUTE22, 
L.ATTRIBUTE23, 
L.ATTRIBUTE24, 
L.ATTRIBUTE25, 
L.ATTRIBUTE26, 
L.ATTRIBUTE27, 
L.ATTRIBUTE28, 
L.ATTRIBUTE29, 
L.ATTRIBUTE30 

希望这有助于

+0

谢谢你的时间和帮助。我使用了一个类型和一个函数来填充它。 –

1

你可以尝试这样的:

replace(replace(myString, 'DATA_SOURCE_ID', 'yourReplaceValue1'), 'LAST_MODIFIED_BY', yourReplaceValu2)..... 

.....是为您做出了类似的替换为你替换字符串:)

+0

谢谢你的时间。 –

+0

@BurhanKhalidButt: - 不客气! –

1

使用其余嵌套更换

SQL> WITH data AS 
    2 (SELECT 'a,b,c' str FROM dual 
    3 ) 
    4 SELECT str, 
    5 REPLACE(REPLACE(REPLACE(str, 'a', 'x'), 'y'), 'z') new_str 
    6 FROM data; 

STR NEW_S 
----- ----- 
a,b,c x,b,c 
+0

谢谢你的时间。 –

+0

@BurhanKhalidButt不客气。但是,请记住,您需要在数据库之外执行这些冗余任务。 –

+0

我无法在数据库之外进行这些更改。正如前面的程序员说他很难做这样的改变。但是,由你和其他成员的帮助'我能够破解它:) –