我不知道如何在sql中创建数组和使用for循环。
merge
into student ta
using student2 tb
on (tb.rollno= ta.rollno)
when matched
then update
set ta.name = 'xyz';
我可以检查相等性并通过默认值'xyz'更新它。我想创建一个数组并从数组中获取值并相应地更新它
这里有一个选择:使用适当格式模型的TO_CHAR
和TO_DATE
函数的组合(将ID
转换为儒略历日期,然后将SPTH
格式模型应用于拼写该数字)。
使用merge
代替update
,因为它只会影响匹配的行。
样本数据:
SQL> select * from tablea;
ID NAME
---------- -----
1 ram
2 raghu
4 joel
SQL> select * from tableb;
ID NAME
---------- --------------------
1 san
2 liana
3 james
合并:
SQL> merge into tableb b
2 using tablea a
3 on (a.id = b.id)
4 when matched then update set
5 b.name = to_char(to_date(b.id, 'J'), 'jspth') || ' student';
2 rows merged.
结果:
SQL> select * from tableb;
ID NAME
---------- --------------------
1 first student
2 second student
3 james
SQL>
第5行右侧是做什么的:
SQL> alter session set nls_date_format = 'dd.mm.yyyy';
Session altered.
SQL> select to_date(1, 'J') from dual;
TO_DATE(1,
----------
01.01.4712
SQL> select to_char(to_date(1, 'J'), 'jspth') from dual;
TO_CH
-----
first
SQL>
阅读格式模型
如果ID是1008呢?没有:
SQL> select to_char(to_date(1008, 'J'), 'jspth') from dual;
TO_CHAR(TO_DATE(100
-------------------
one thousand eighth
SQL>