sql - 在 sql 中查找硬编码值(忽略注释)
问题描述
我正在尝试通过匹配硬编码值来对我们尝试构建视图和索引的所有位置进行分类。我在完全用 sql 编写的迁移脚本存储库中运行它。
我想出了这个正则表达式,它似乎给了我相当多的匹配:
git grep -o -e "\w\+\s*[=~]\s*'[^']\+'" \
-e "\w\+\s*\w\+\s*('[^']\+'" \
'*.sql'
输出看起来像
migrations/50__xdr/R__create_xdr_indexes/20__indexes_10_all.sql:pattern_rawValue = 'J19.2020'
migrations/50__xdr/R__create_xdr_indexes/20__indexes_10_all.sql:pattern_rawValue = 'J19.2020'
… # lots of duplicates
migrations/50__xdr/V5.4.3__initial_xdr/01__xdr_schema.sql:matchingState IN ('Connectedness'
… # and so on
松散地,它正在寻找匹配运算符后面的单引号中的第一个值。但我发现它也在很多注释行中找到匹配项。忽略注释行变得复杂。一方面,很难只看到“有趣”的部分:
git grep -o -e "^[^-].*{rest of expression as above}" …
有没有更好的方法来找到这些硬编码的表达式,特别是排除注释行?(我也对检查 postgresql 数据库本身的解决方案持开放态度。)
解决方案
推荐阅读
- regex - sed 替换包含括号的确切字符串
- python - NTLK nltk.ConditionalFreqDist - 绘制 ngram
- javascript - 下面的代码中创建了哪种类型的变量
- r - 心理包中的 ICC:stack.data.frame(x) 中的错误:未选择向量列
- xml - 使用 TidHttp 无效请求发布 XML
- android - 将 Android SDK 从 29 降级到 21
- python - 单击 Tinder 登录按钮时没有此类元素错误
- php - 如果用户从注册表单 php 中删除名称 attr,如何修复未定义的索引
- java - 在 Java8 中使用 JAXB schemagen 不会为枚举类型生成 XSD
- c++ - 致力于通过回溯解决 Nqueens 问题,并作为 CSP 特别是最受约束的值