通过连接在SQL中生成用户标识

时间:2014-12-01 10:26:38

标签: sql oracle

我需要一个脚本,它通过连接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; 

2 个答案:

答案 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);