我需要一个脚本,它通过连接first_name的第一个字母和last_name的前七个字符自动生成。因此,生成的用户标识必须为小写。因此,脚本不应该提示用户ID。
我必须用它来插入。它在那里,但我不知道如何使它工作。
INSERT INTO my_employee
(
id,
last_name,
first_name,
userid,
salary
)
VALUES (&id,
&last_name,
&first_name,
LOWER(SUBSTR(first_name,1,1) || SUBSTR(last_name,1,7)),
&salary);
非常感谢Shantanu的想法,我找到了解决方案,而不是世界上最聪明的解决方案,但它完成了这项工作:D:
INSERT INTO my_employee
VALUES ( &id,
'&last_name',
'&first_name',
NULL,
&salary);
UPDATE my_employee
SET userid = LOWER(SUBSTR(last_name,1,1) || SUBSTR(first_name,1,7))
WHERE userid IS NULL;
答案 0 :(得分:1)
最简单的方法是从提示符
插入id,last_name,first_name,salary的值然后使用update将userid与您的逻辑放在一起:LOWER(SUBSTR(first_name,1,1)|| SUBSTR(last_name,1,7))
答案 1 :(得分:0)
您只需要PROMPT
中的SUBSTR
。
例如,
SQL> SELECT substr('&ename', 1, 1) || substr('&ename', 1, 7) FROM dual
2 /
Enter value for ename: abcdefgh
Enter value for ename: abcdefgh
old 1: SELECT substr('&ename', 1, 1) || substr('&ename', 1, 7) FROM dual
new 1: SELECT substr('abcdefgh', 1, 1) || substr('abcdefgh', 1, 7) FROM dual
SUBSTR('
--------
aabcdefg
SQL>
将您的查询修改为,
INSERT INTO my_employee
(
id,
last_name,
first_name,
userid,
salary
)
VALUES (&id,
&last_name,
&first_name,
LOWER(SUBSTR(&first_name,1,1) || SUBSTR(&last_name,1,7)),
&salary);