我之前可能会问过我要问的问题,但我无法找到任何令人满意的答案来解决我所面临的问题。
我写了2个正则表达式来查找数据库中以特殊字符(非字母数字)开头的列,下面是2个正则表达式,
要查找只包含特殊字符的记录,
select col_name from tbl_name where regexp_like (col_name, '^[^ 0-9 A-Z a-z]*$');
查找仅第一个字符为非字母数字的记录
select col_name from tbl_name where regexp_like(col_name, '^[^ 0-9 A-Z a-z]{1}.*');
但是上面的查询并没有返回一些col_name值仅为正斜杠(/)的文档。我无法理解,为什么它没有返回任何这些记录。 另外如何确认,上述查询不会遗漏任何其他非字母数字字符。
希望我对我的问题很清楚。
答案 0 :(得分:1)
试试这个:
regexp_like(col_name,'^[^0-9A-Za-z]')
其中不会排除带有前导空格的col_names,只会查看col_name的第一个字符。
答案 1 :(得分:0)
找到特殊字符
.fact-blocks {font-size:14px;background: #d8e5f6 none repeat scroll 0 0;border-top:1px solid #b8d0ee}
.timeline::before {
background: #cecece none repeat scroll 0 0;
bottom: 0;
content: "";
display: block;
left: 19px;
position: absolute;
top: 0;
width: 12px;
}
.timeline {
padding: 44px 0 56px 60px;
position: relative;
}
.step-title:before {
background: #cecece none repeat scroll 0 0;
border-radius: 50%;
content: "";
height: 28px;
left: -57px;
margin-top: -12px;
position: absolute;
top: 50%;
width: 28px;
}
.facts h2 {
background-color: #72c630;
border-radius: 2px;
color: #fff;
display: inline-block;
font-family: inherit;
font-size: 22px;
font-weight: 700;
letter-spacing: 0;
line-height: 1.5;
margin: 0 0 45px 9px;
padding: 11px 24px;
position: relative;
text-align: center;
text-transform: uppercase;
word-spacing: 0;
}
.facts h2:nth-of-type(odd) {
background-color: #245697;
border-radius: 2px;
color: #fff;
display: inline-block;
font-family: inherit;
font-size: 22px;
font-weight: 700;
letter-spacing: 0;
line-height: 1.5;
margin: 0 0 45px 9px;
padding: 11px 24px;
position: relative;
text-align: center;
text-transform: uppercase;
word-spacing: 0;
}
.facts h2:after {
border-bottom: 8px solid transparent;
border-right: 11px solid #72c630;
border-top: 8px solid transparent;
content: "";
height: 0;
left: 0;
margin: -7px 0 0 -10px;
position: absolute;
top: 50%;
width: 0;
}
.facts h2:nth-of-type(odd):after {
border-bottom: 8px solid transparent;
border-right: 11px solid #245697;
border-top: 8px solid transparent;
content: "";
height: 0;
left: 0;
margin: -7px 0 0 -10px;
position: absolute;
top: 50%;
width: 0;
}
.fact-blocks:nth-of-type(odd) {background-color:#eff9e8;border-top:1px solid #d0eeb8;}
.factimg {width:300px;height:300px;}
.fact-blocks img {width:300px;border-radius:50%;overflow:hidden;border:7px #cecece solid;box-shadow:0 0 2px 2px rgba(0, 0, 0, 0.6);}
ol.circles-list {
list-style-type: none;
list-style-type: decimal !ie; /*IE 7- hack*/
margin: 0;
margin-left: 4em;
padding: 0;
counter-reset: li-counter;
}
ol.circles-list > li{
position: relative;
margin-bottom: 20px;
padding-left: 0.5em;
min-height: 3em;
}
ol.circles-list > li:before {
position: absolute;
top: 0;
left: -1.33em;
width: 1.2em;
height: 1.2em;
font-size: 2.5em;
line-height: 1.2;
text-align: center;
color: #f5f5f5;
border: 3px solid #c5c5c5;
border-radius: 50%;
background-color: #464646;
content: counter(li-counter);
counter-increment: li-counter;
}
答案 2 :(得分:0)
所以不清楚你想要匹配什么,但你的正则表达式对我来说似乎很奇怪。 here是一个包含可以修改的测试用例的演示。我认为你的正则表达式是
[\/#$%]?\w*
在开始时有一个可选的/
以及#
等,然后是[a-zA-Z0-9]的任意数量的空白字符。您的班级声明中也不需要空格。
所以,就像@Moudiz写的那样,构建是按照
的方式进行的select col_name from test
where rlike(col_name, '[\/#$%]?\w*')