查找乱码字符串的SQL
昨天系统导数据库,一不小心把nls_language设错了,结果导出来的函数和过程里面的中文字符串中的字符都变成问号了(?)。
结果业务部门报告,好多报表里面的内容都变成问号了,这下麻烦了。
首要问题,是要把有这种问题的函数和过程找出来,但是系统中的函数和过程有好多啊,将近一千个,有人说要大家每个人分几个,用眼睛看,那可不行啊,会累死人的,哈哈。
想想办法吧,记得Oracle的函数和过程每行的文本都是存在一个系统表中的,而且,有问题的函数和过程会有一个特点,就是里面的字符串都变成了'???'的形式,只不过里面的问号的数量不一定。
那种形式正好可以让正则表达式发挥作用,而且还记得Oracle提供了正则表达式的函数呢。
确定了方向之后,说干就干,查了一下资料,所有的函数和过程都存储在User_Source这个表中。而Oracle还提供了REGEXP_Like函数。
于是就有了下面的SQL:
select
distinct
name,
type
from
user_source where
REGEXP_LIKE(text, '''\?{1,1000}''')
一下子就把有问题的函数和过程名都找出来了。哈哈,省了不少功夫啊。
总结一下,遇到问题的时候不要着急,不能依赖手工的工作。Oracle中的系统表和内置函数功能很强大,要充分利用。
作者:侯伯薇@大连
出处:http://www.cnblogs.com/houbowei/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述