查询非数字和非空的字段

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]% '

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值