我用数据库检索出一条数据中,包含空值和null,还有有效值,我想如何可以把空值和null值去掉,只包含有效值,select *
从所有的数据去取值的,是个动态的显示,我不知道什么时候在检索出的这条记录哪个字段有值,我测试取值的jdbcTemplate.queryForList(sql),里面的值[{F10=, F11=, F12=, F13=, F14=, F15=, F16=, F17=null, F18=null, F19=null, F20=null, F21=null, F22=null, F23=, F24=, F25=null, F26=归入整编, F27=, F28=null, F29=, F30=null,}我只向取 F26=归入整编,希望高人指点!!!!!!
从所有的数据去取值的,是个动态的显示,我不知道什么时候在检索出的这条记录哪个字段有值,我测试取值的jdbcTemplate.queryForList(sql),里面的值[{F10=, F11=, F12=, F13=, F14=, F15=, F16=, F17=null, F18=null, F19=null, F20=null, F21=null, F22=null, F23=, F24=, F25=null, F26=归入整编, F27=, F28=null, F29=, F30=null,}我只向取 F26=归入整编,希望高人指点!!!!!!
mysql和oracle我记得是is null吧
select * from db where data is not null and data != ""
那用正则匹配一下嘛
我想想
F[0-9]{2}[\x80-\xff]
这个应该可以
Matcher matcher = pattern.matcher(b);好像不行了,说F[0-9]{2}[\x80-\xff]非法的,我不怎末会用正则表达式,能帮我写下代码吗?
String str = "F10=, F11=, F12=, F13=, F14=, F15=, F16=, F17=null, F18=null, F19=null, F20=null, F21=null, F22=null, F23=, F24=, F25=null, F26=归入整编, F27=, F28=null, F29=, F30=null,";
Pattern p = Pattern.compile("F[0-9]{2}=[\u4e00-\u9fa5]+");
Matcher m = p.matcher(str); while(m.find()) {
System.out.println(m.group());
}
List<String> list = new ArrayList<String>();
if(str!=null) {
String regEx = "F(\\d+)=[^,null]+";
Pattern p=Pattern.compile(regEx, Pattern.MULTILINE);
Matcher m=p.matcher(str);
while(m.find()){
list.add(m.group());
}
}
return list;
}
public static void main(String[] args) {
String str = "[{F10=12, F11=, F12=, F13=abc, F14=, F15=测试11, F16=, F17=null, F18=null, F19=null, F20=null, F21=null, F22=null, F23=, F24=, F25=null, F26=归入整编, F27=, F28=null, F29=, F30=null,}";
StringTest test = new StringTest();
List<String> myList = test.getValidValue(str);
for(String search : myList) {
System.out.println(search);
}
}
}输出如下:F10=12
F13=abc
F15=测试11
F26=归入整编
就是 [F 两位数字 = 中文1位以上]
你想要什么??
给个字符串例子
给个需要的结果例子
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class StringTest { public List<String> getValidValue(String str) {
List<String> list = new ArrayList<String>();
if(str!=null) {
String regEx = "F(\\d+)=[^,null]+";
Pattern p=Pattern.compile(regEx, Pattern.MULTILINE);
Matcher m=p.matcher(str);
while(m.find()){
list.add(m.group().replaceAll("F(\\d+)=", ""));
}
}
return list;
}
public static void main(String[] args) {
String str = "[{F10=12, F11=, F12=, F13=abc, F14=, F15=测试11, F16=, F17=null, F18=null, F19=null, F20=null, F21=null, F22=null, F23=, F24=, F25=null, F26=归入整编, F27=, F28=null, F29=, F30=null,}";
StringTest test = new StringTest();
List<String> myList = test.getValidValue(str);
for(String search : myList) {
System.out.println(search);
}
}
}输出:12
abc
测试11
归入整编
[{F10=12, F11=, F12=, F13=abc, F14=, F15=测试11, F16=, F17=null, F18=null, F19=null, F20=null, F21=null, F22=null, F23=, F24=, F25=null, F26=归入整编, F27=, F28=null, F29=, F30=null,F43=]},然后打印12
abc
测试11
归入整编
高手在帮我看看
F[0-9]{2}=[\u4e00-\u9fa5]+
就是 [F 两位数字 = 中文1位以上]
你想要什么??
给个字符串例子
给个需要的结果例子[{F10=12, F11=, F12=, F13=abc, F14=, F15=测试11, F16=, F17=null, F18=null, F19=null, F20=null, F21=null, F22=null, F23=, F24=, F25=null, F26=归入整编, F27=, F28=null, F29=, F30=null,F43=]}
结果F15=测试11,F26=归入整编
变成String regEx = "F(\\d+)=[^,null\\]}]+";
OK了。
String str = "F10=, F11=, F12=asdf, F13=测试测试asdf, F14=, F15=测试11, F16=, F17=null, F18=null, F19=null, F20=null, F21=null, F22=null, F23=, F24=, F25=null, F26=归入整编, F27=, F28=null, F29=, F30=null,";
Pattern p = Pattern.compile("F[0-9]{2}=[\u4e00-\u9fa50-9a-zA-Z]+");
Matcher m = p.matcher(str); while(m.find()) {
String s = m.group();
if(!Pattern.matches("^F[0-9]{2}=null$", s))
System.out.println(s);
}
这一句就可以了呀