我正在解决这个问题,但我不能使它工作。看到下面的代码,有人能给予我修改有关查询?
我希望这个插入语句从这个
`Insert into Sample_Table
(DESCRIPTION)
Values
('This is example
test
TEST');`
字符串
当我查看表中该数据的insert语句时:
`Insert into Sample_Table
(DESCRIPTION)
Values
('This is example test
TEST');`
型
可以使用正则表达式吗?
这是我正在使用的查询。有人能修改一下吗?这样我就能得到预期的输出了。先谢谢你。
`DECLARE
CURSOR chk_for_bad_data IS
SELECT description
FROM Sample_Table
WHERE REGEXP_LIKE (replace(replace(description,chr(10), ';'), CHR(09), ';'), '[^[:print:]]', 'x');
BEGIN
FOR get_bad_data IN chk_for_bad_data LOOP
UPDATE Sample_Table
SET description = regexp_replace(description, '(.*)(\r?\n)+$', '\1\r\n');
WHERE descriptio = get_bad_data.description
END LOOP;
END;`
型
2条答案
按热度按时间qeeaahzv1#
首先,您可以将描述分为两部分:
1.直到最后一行:
SUBSTR(description,1,INSTR(description,CHR(10),-1))
1.从最后一行开始:
SUBSTR(description,INSTR(description,CHR(10),-1))
然后,删除第一部分中的所有换行符:
REPLACE(SUBSTR(description,1,INSTR(description,CHR(10),-1)),CHR(10),'')
最后将结果字符串和初始第二部分连接起来:
**REPLACE(SUBSTR(description,1,INSTR(description,CHR(10),-1)),CHR(10),'')||
SUBSTR(description,INSTR(description,CHR(10),-1))**
当然,这仅适用于描述中至少有一个换行符的元素。
举例来说:
字符串
您的代码还对'tab'和'return'字符执行了一些操作。问题中没有具体说明,所以我不知道该怎么办。
也许你想在删除换行符的地方插入一个空格。在这种情况下,将REPLACE函数的最后一个参数从空字符串更改为单个空格。
ymzxtsji2#
您不需要正则表达式,可以使用简单的字符串函数来查找最后一个换行符的索引,然后替换子字符串中在此之前的所有换行符:
字符串
哪些输出:
| REMOVED |
| ------------ |
| 测试TEST |
然后,您的查询可以简化为(不需要任何游标或循环):
型
fiddle