这是一个相对复杂的处理,^_^,思路如下:
1将PAS00000000055956的前3位PAS截取下来
2将PAS00000000055956中的后14位数字截取下来,并转换成数字,然后与9000000相加
3将加的结果转换为字符串,并与'0000000000000'进行拼接,
4对拼接的字符串进行取得最右边的14位,这样保留了原来的PAS00000000055956的后面的14位长度不变
5对取得的结果与第1步截取下来前3位PAS进行拼接,这样得到了最后的结果,
具体的SQL语句如下:
substring(PAS00000000055956,1,3)+right('0000000000000'+cast((cast(substring(PAS00000000055956,4,14) as int) +9000000) as varchar(14)),14)
呵呵,希望能有帮助,^_^
楼上说的都不对,如果有空值的话,那样想减还是空值,应该这样:
SELECT
isnull(A,0)-isnull(B,0)
AS
结果
FROM
表
--
sqlserver
语法
SELECT
nvl(A,0)-nvl(B,0)
AS
结果
FROM
表
--Oracle语法
SELECT
ifnull(A,0)-ifnull(B,0)
AS
结果
FROM
表
--mysql语法
以上,希望对你有所帮助
delimiter //
create trigger trigger1 after update on B for each row
begin
declare sl int;
set sl=NEW退货数量;
update A set 数量=数量-sl;
end //
格式:update 表名称 set 字段名称 = 字段名称 + 1 [ where语句]
比如说数据库中有一张student表,要想把id为1的学生成绩(score)加1则
update student set score=score+1 where id = 1
如果你不加where系统就不会知道你具体要更新哪条记录,而导致所有该表中score都增加1,当然,除非这就是你的本意。
一般来说,ID是不允许改变的。CASE when 可以执行条件判断,如果要全表执行,建议先全部减少1,在判断如果小于0,则等于0
update user set id=(
select case id
when id>0 then id-1
else 0
where id=xxx
) where id=xxx;
数据库对数据是按行为单位,对列进行查询、运算等等 *** 作进行投影的。
如果你想对同张表的两行数据对应相减,你应该让表自连接,连接条件就是你说的对应关系,然后连接后就变成一行,数值变为两列,就可以运算了
示例:
select acnt-bcnt
from my_table a,my_table b
where 对应关系;
以上就是关于SQL数据库字段加减一个定量的实现语句。全部的内容,包括:SQL数据库字段加减一个定量的实现语句。、求sql语句。得出表中两列相减的值、MYSQL怎么实现两个表的字段值相减 求这样的SQL语句等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)