1.查询非数字和非空的字段
select * from inventorylocation where locationnumber like '%[^0-9]%' and locationnumber is not null
2. :sql update 对null字段无法更新?解决方法 :
sql update 对null字段无法更新?
是这样的,假如一张表table1的结构如下:
uid name memo m1
===================
001 张三 null hahaha
我是这样用的,update table1 set memo=memo+m1 where uid=001
结果是无法更新,也不报错,但如果是update table1 set memo=m1 where uid=001则是可以的。
另外,如果table1中的memo字段是非null,比如是这样的表
uid name memo m1
===================
001 张三 mmmm hahaha
则执行update table1 set memo=memo+m1 where uid=001 就可成功,结果是memo= mmmmhahaha
请问如何解决...
------解决方案--------------------
update table1 set memo=isnull(memo,' ')+m1 where uid=001
------解决方案--------------------
--
declare @s varchar(10)
declare @s2 varchar(10)
set @s=null
set @s2=@s+'888'
select @s2
set @s2=isnull(@s,'')+'888'
select @s2
/*
----------
NULL
(所影响的行数为 1 行)
----------
888
(所影响的行数为 1 行)
*/
------解决方案--------------------
-
SQL code
update table1 set memo=isnull(memo,' ')+m1 where uid=001 ------解决方案-------------------- null与任何字符相加,都是null 同样,相加时也是这样,所以在计算中,或者拼合字符串时,一定要注意要使用isnull()函数。 ------解决方案-------------------- NULL是一个销毁装置,它与任何的东西操作,无论加减乘除,还是其他什么操作,只要有操作,结果都是NULL!! ------解决方案-------------------- SET CONCAT_NULL_YIELDS_NULL OFF update table1 set memo=memo+m1 where uid=001
sql server数字型字段,有非法字符的修复方法
一、个人经验
字段设置
安段为数字类型,设置为允许为空时
现象
使用update等语句修改时,报有null值等错误
调整方法
update 表名 set 调整字段=null where isnumeric(调整字段)=0
二、网上文章
ISNUMERIC函数的作用
ISNUMERIC函数的作用是确定表达式是否为一个有效的数字类型。 语法: ISNUMERIC ( expression ) --备注 --如果输入表达式的计算值为有效的整数、浮点数、money 或 decimal 类型时,ISNUMERIC 返回 1;否则返回 0。返回值为 1 时,指示可将 expression 至少转换为上述数值类型中的一种。
select isnumeric('1e-2'), isnumeric('1e+2'), isnumeric('1e2'), isnumeric('1.1'), isnumeric('-1.1'), isnumeric('+1.1'), isnumeric('$12'), isnumeric('¥12')
--在单纯判断字段是否只含有数字的情况下用这个函数,可能会有以上情况干扰 --必要的情况下,应该使用
select * from [Table] where patindex('%[^0-9]%',a)=0
--或者 not like '%[^0-9]% '