sql判断空字符串
⑴ sql中如何判断字段NULL或者为空字符串
select case when a is null then b when a='' then b else a end from 表 create table test
(
a varchar(20),
b varchar(10)
)
insert into test (b) values('b')
insert into test (a,b) values('','b')
insert into test(a,b) values ('a','b')
select case when a is null then b when a='' then b else a end from test
复制代码 ,粘贴,执行,直接可以看到结果
⑵ sql判断一个字符串是否是数字
如果是ORACLE,可以:
select translate(str,'x1234567890','x') from al,如果得到的是空则是数字,如果不是空,则是带字符串的。
⑶ sql server的sql语句怎么判断一个字段是否为空
使用 is null 或 is not null 来处理列的空值。
语法为:
列名 is null (字段为空返回true ,不为空返回 false)
列名 is not null (字段为空返回false,不为空返回 true)
例如:
select case when a is null then 1 else 0 end from aaa
语法大意:如果a列 为空显示1,不为空显示0。
(3)sql判断空字符串扩展阅读:
注意事项
字段内容为空有两种情况
1.为null
2.为字符串的空''
语句如下:
select * from table where column is null or trim(column)=''
这样就可以排除字段内容为null、''的。
判断某个字段不为空
select * from table where trim(column) != ''
曾经尝试判断null:is not null.但是不起作用,放弃。。。直接 trim(column) != '' 就能解决。
⑷ 数据库SQL,谁能解释一下if ISNULL(A,'')<>''这个条件是什么意思 是说A不等于空吗
ISNULL(A,'')函数的作用是,判断A是否是NULL值,如果是则转化成空字符串,如果不是,不处理。
if ISNULL(A,'')<>''实质上是指A字段的值不能等于NULL,也不能等于''。
⑸ 【SQL】表中的空字符串与NULL中的区别何在
对于SQL的新手,NULL值的概念常常会造成混淆,常认为NULL是与空字符串''相同的事。情况并非如此。例如,下述语句是完全不同的:
mysql>INSERTINTOmy_table(phone)VALUES(NULL);
mysql>INSERTINTOmy_table(phone)VALUES('');
这两条语句均会将值插入phone(电话)列,但第1条语句插入的是NULL值,第2条语句插入的是空字符串。
第1种情况的含义可被解释为“电话号码未知”,而第2种情况的含义可被解释为“该人员没有电话,因此没有电话号码”。
为了进行NULL处理,可使用IS NULL和IS NOT NULL操作符以及IFNULL()函数。 在SQL中,NULL值与任何其它值的比较(即使是NULL)永远不会为“真”。
包含NULL的表达式总是会导出NULL值,除非在关于操作符的文档中以及表达式的函数中作了其他规定。
下述示例中的所有列均返回NULL:
mysql>SELECTNULL,1+NULL,CONCAT('Invisible',NULL);
如果打算搜索列值为NULL的列,不能使用expr = NULL测试。
下述语句不返回任何行,这是因为,对于任何表达式,expr = NULL永远不为“真”:
mysql>SELECT*FROMmy_tableWHEREphone=NULL;
要想查找NULL值,必须使用IS NULL测试。
在下面的语句中,介绍了查找NULL电话号码和空电话号码的方式:
mysql>SELECT*FROMmy_tableWHEREphoneISNULL;
mysql>SELECT*FROMmy_tableWHEREphone='';
如果正在使用MyISAM、InnoDB、BDB、或MEMORY存储引擎,能够在可能具有NULL值的列上增加1条索引。
如不然,必须声明索引列为NOT NULL,而且不能将NULL插入到列中。
用LOAD DATA INFILE读取数据时,对于空的或丢失的列,将用''更新它们。
如果希望在列中具有NULL值,应在数据文件中使用N。在某些情况下,也可以使用文字性单词“NULL”。
使用DISTINCT、GROUP BY或ORDER BY时,所有NULL值将被视为等同的。
使用ORDER BY时,首先将显示NULL值,如果指定了DESC按降序排列,NULL值将最后显示。
对于聚合(累计)函数,如COUNT()、MIN()和SUM(),将忽略NULL值。对此的例外是COUNT(*),它将计数行而不是单独的列值。
例如,下述语句产生两个计数。首先计数表中的行数,其次计数age列中的非NULL值数目:
mysql>SELECTCOUNT(*),COUNT(age)FROMperson;
对于某些列类型,MySQL将对NULL值进行特殊处理。如果将NULL插入TIMESTAMP列,将插入当前日期和时间。如果将NULL插入具有AUTO_INCREMENT属性的整数列,将插入序列中的下一个编号
⑹ SQL字符串去空格解决方法
一、表中字符串带空格的原因
1,空格就是空格。
2,数据是从别的系统、文件抓取,导入到SQLSERVER中的表,由于源数据存在特殊字符显示空格。
二、解决方法
第一种情况,去空格的处理的比较简单,Replace(column,‘ ‘,‘‘) 就可以解决。
第二种情况,解决方法就比较麻烦点:需要先查出相应的ASCII码,再用Replace(column,char(ascii码),‘‘)解决,以下举个栗子:
CREATE TABLE #temp(NAME NVARCHAR(50))INSERT INTO #temp SELECT ‘明天就是国庆了‘+CHAR(10) --换行符SELECT * FROM #temp --末尾显示为空格SELECT REPLACE(NAME,‘ ‘,‘‘) FROM #temp --去不掉这个空格SELECT REPLACE(NAME,CHAR(10),‘‘) FROM #temp --去掉空格SELECT REPLACE(NAME,CHAR(ASCII(RIGHT(NAME,1))),‘‘) FROM #temp --在不知道是最后一位是什么字符的情况下,先转ASCII码,在替换DROP TABLE #temp----下面是查询结果:--‘明天就是国庆了 ‘--‘明天就是国庆了 ‘--‘明天就是国庆了‘--‘明天就是国庆了‘
SQL字符串去空格解决方法