您似乎混淆了
concat
函数、
substr
函数和连接运算符(
||
)。您没有使用
substr
函数来获取名字的第一个字符,要限制长度,您需要提供
起始位置和子字符串长度。
您还在引用m.firstname
而没有将m
定义为表名的别名;虽然只有一张表,但实际上不需要别名,如果使用别名,请始终如一地使用。
要获取名字的第一个字母和姓氏的前五个字母,您可以使用:
SELECT SUBSTR(m.firstname, 1, 1) || SUBSTR(m.surname, 1, 5)
FROM marketing m
WHERE m.marketing_id = 10001;
或者
SELECT CONCAT(SUBSTR(m.firstname, 1, 1), SUBSTR(m.surname, 1, 5))
FROM marketing m
WHERE m.marketing_id = 10001;
如果你要更新同一张表中的列,而不是使用PL/SQL into
子句,你需要使用更新而不是选择:
UPDATE marketing
SET username = SUBSTR(firstname, 1, 1) || SUBSTR(surname, 1, 5)
WHERE marketing_id = 10001;
SQL Fiddle demo.
Paul Jones
和Peter Jones
时,你会怎么做? - David Faber