PostgreSQL COALESCE使用方法代码解析
这篇文章主要介绍了PostgreSQL COALESCE使用方法代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下有这种要求,更新自己本身的字段的某个值进行加或者减常规方法:UPDATEtbl_kintai_print_his
SET
print_time = now(),
print_emp_cd = '000000',
times = (select times from tbl_kintai_print_his wherekokyaku_cd= '000002' AND
sagyo_ymd= '2015-01-30' )
+ 1,
pattern = '055' ,
ko_item_1 = 'no.0' ,
ko_item_2 = 'no.2' ,
ko_item_3 = 'no.3' ,
ko_item_4 = 'no.4' ,
ko_item_5 = 'no.5'
WHERE
kokyaku_cd= '000002' AND
sagyo_ymd= '2015-01-30'能实现,不过效率肯定不高,要进行查询两次pgsql里面提供一个函数能完成这个操作:UPDATE
tbl_kintai_print_his
SET
print_time = now(),
print_emp_cd = '000000',
times = COALESCE (SUM(times),0)+ 1,
pattern = '055' ,
ko_item_1 = 'no.0' ,
ko_item_2 = 'no.2' ,
ko_item_3 = 'no.3' ,
ko_item_4 = 'no.4' ,
ko_item_5 = 'no.5'
WHERE
kokyaku_cd= '000002' AND
sagyo_ymd= '2015-01-30'能直接取到上一次的结果进行添加二:还有一种用法就是在几个字段中取值,从前往后,一直取到不为NULL的值为止。select id , name ,coalesce(Ph_no,Alt_no,Office_no) as contact number from employee我们可以通过这样的语句,来得到Ph_no,Alt_no,Office_no这几个字段中,第一个不存在null的数值,上面的语句得到以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。www.changshakz.com
这个是什么技术来的 = tbl_kintai_print_his.kokyaku_cd
and times < now()
ORDER BY times desc
LIMIT 1);
这个更新语句的意思是:
1. 将tbl_kintai_print_his表的print_time字段设置为当前时间now()。
2. 将tbl_kintai_print_his表的print_emp_cd字段设置为一个随机生成的字符串'000000'。
3. 将tbl_kintai_print_his表的times字段设置为其okyaku_cd字段的值,取值为上一个时间字段的值。然后对times字段进行降序排序,取第一个值(即最近的时间)。
这个更新语句的作用是:当某个周期的发票打印完成后,将最近一次打印的时间和打印员工ID设置为当前时间,并将下一个周期的打印时间设置为最近一次打印时间的下一个时间(即上一个周期的发票打印完成后的下一个时间点)。 = tbl_kintai_print_his.company_cd), \
print_cost = (select cost from tbl_kintai_print_his wherekokyaku_cd= tbl_kintai_print_his.company_cd)\
and print_cost = COALESCE(print\_cost, 0);
这个SQL语句的作用是更新名为tbl\_kintai\_print\_his的表,将print\_time、print\_emp\_cd、times和print\_cost这四个字段进行更新。其中,print\_cost字段是根据公司cd的值查询tbl\_kintai\_print\_his表中的cost字段,如果cost字段为空,则使用0替换。这里的COALESCE函数就起到了这个作用。 = '000000'),<br>times=100000000*2,<br>times>=100000000*10,<br>times>=100000000*100,<br>times>=100000000*1000, <br>times>=100000000*10000,<br>times>=100000000*100000,<br>times>=100000000*1000000,<br>times>=100000000*10000000,<br>times>=100000000*100000000,<br>times>=100000000*1000000000,<br>times>=100000000*10000000000,<br>times>=100000000*100000000000,<br>times>=100000000*1000000000000,<br>times>=100000000*10000000000000,<br>times>=100000000*100000000000000<br>WHERE<br>kokyaku_cd = '000000'<br>-- 常规方法:只需将条件放在WHERE子句中,不需要使用COALESCE<br>-- 示例代码:使用COALESCE的WHERE子句<br>UPDATE tbl_kintai_print_his<br>SET print_emp_cd = COALESCE(print_emp_cd, '00000000'),<br> times = COALESCE(times, 0),<br> ...<br>WHERE ...<br><br>在这段示例代码中,我们使用UPDATE子句更新了tbl_kintai_print_his表中的数据。<br><br>1. SET子句中,我们分别将print_time、print_emp_cd、times字段设置为now()、'000000'、我们要更新的新值。<br><br>2. WHERE子句中,我们将kokyaku_cd设置为'000000',表示只更新kokyaku_cd为'000000'的记录。<br><br>3. COALESCE函数的使用。<br><br>在SET子句中,我们使用COALESCE(print_emp_cd, '00000000')来设置print_emp_cd字段的值。如果print_emp_cd字段存在,那么就更新为它的值,否则更新为默认值'00000000'。<br><br>同理,在SET子句中,我们使用COALESCE(times, 0)来设置times字段的值。如果times字段存在,那么就更新为它的值,否则更新为默认值0。<br><br>通过这种方法,我们可以根据需要更新tbl_kintai_print_his表的字段值,实现特定条件下的处理。 = tblkintaiprinthis.schoolcd) + COALESCE(tblkintaiprinthis.timescd, 0);<br><br>这段代码的主要作用是更新名为tblkintaiprinthis的表中的数据。其中,printtime字段是当前时间,printempcd是一个默认值,值为'000000'。然后,使用COALESCE函数来合并times字段和0。<br><br>1. COALESCE函数的作用是:如果第一个参数不为NULL,则返回第一个参数;如果第一个参数为NULL,且第二个参数不为NULL,则返回第二个参数;如果两个参数都为NULL,则返回第三个参数(默认为NULL)。<br><br>2. 在这个例子中,我们使用COALESCE将tblkintaiprinthis.timescd与0相加,如果tblkintaiprinthis.timescd不为NULL,则返回tblkintaiprinthis.timescd,否则返回0。这样,最终的times字段值就是当前值或0,避免了空值的产生。<br><br>3. 通过以上更新,使得每次更新数据时,printtime字段始终有值,而printempcd可以设置为默认值。
页:
[1]