如何使用SQLCONCAT/SUBSTR?
How to use SQL CONCAT/SUBSTR?
我正在尝试为营销 table 中的每个人创建一个用户名。
我想要一个将新用户名插入用户名列的更新语句。
我想取名字的第一个字母,加入姓氏的前5个字母,并将其保存到营销的用户名列中table。我也需要以某种方式将其放入程序中。
这是我的代码:
SELECT CONCAT(m.firstname, 1)||SUBSTR(m.surname, 5)
INTO username
FROM marketing
WHERE marketing_id = 10001;
但是,我收到似乎无法修复的错误,例如名字和姓氏是无效的标识符。在这里的任何帮助表示赞赏。
update username
set username= (select concat(left(firstname,1),left(surname,5))
from marketing
WHERE marketing_id = 10001)
WHERE marketing_id = 10001;
m.name
中的 m
需要定义,但缺少。 CONCAT
(MySQL?) 应该使用字符串,除了字符串之外还传递一个数字 (1
)。您的描述提到了两个子字符串,语句只有一个,以 SUBSTR
的出现次数来衡量。如果您的 SQL 方言支持连接运算符,那么它将看不到您想要看到的内容(两个 SUBSTR
ings)。
您似乎混淆了 concat
函数、substr
函数和连接运算符 (||
)。您没有使用 substr
来获取名字的第一个字符,并重新设置您需要提供的两者的长度 both the starting position and the substring length.
您还提到了 m.firstname
,但没有将 m
定义为您的 table 名称的别名;这里真的不需要别名,因为只有一个 table 但如果你使用它,请始终如一地使用它。
要获取名字的第一个字母和姓氏的前五个字母,您可以使用:
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;
如果您要更新同一 table 中的列,而不是使用 PL/SQL into
子句,您需要更新而不是 select:
UPDATE marketing
SET username = SUBSTR(firstname, 1, 1) || SUBSTR(surname, 1, 5)
WHERE marketing_id = 10001;
我正在尝试为营销 table 中的每个人创建一个用户名。 我想要一个将新用户名插入用户名列的更新语句。
我想取名字的第一个字母,加入姓氏的前5个字母,并将其保存到营销的用户名列中table。我也需要以某种方式将其放入程序中。
这是我的代码:
SELECT CONCAT(m.firstname, 1)||SUBSTR(m.surname, 5)
INTO username
FROM marketing
WHERE marketing_id = 10001;
但是,我收到似乎无法修复的错误,例如名字和姓氏是无效的标识符。在这里的任何帮助表示赞赏。
update username
set username= (select concat(left(firstname,1),left(surname,5))
from marketing
WHERE marketing_id = 10001)
WHERE marketing_id = 10001;
m.name
中的 m
需要定义,但缺少。 CONCAT
(MySQL?) 应该使用字符串,除了字符串之外还传递一个数字 (1
)。您的描述提到了两个子字符串,语句只有一个,以 SUBSTR
的出现次数来衡量。如果您的 SQL 方言支持连接运算符,那么它将看不到您想要看到的内容(两个 SUBSTR
ings)。
您似乎混淆了 concat
函数、substr
函数和连接运算符 (||
)。您没有使用 substr
来获取名字的第一个字符,并重新设置您需要提供的两者的长度 both the starting position and the substring length.
您还提到了 m.firstname
,但没有将 m
定义为您的 table 名称的别名;这里真的不需要别名,因为只有一个 table 但如果你使用它,请始终如一地使用它。
要获取名字的第一个字母和姓氏的前五个字母,您可以使用:
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;
如果您要更新同一 table 中的列,而不是使用 PL/SQL into
子句,您需要更新而不是 select:
UPDATE marketing
SET username = SUBSTR(firstname, 1, 1) || SUBSTR(surname, 1, 5)
WHERE marketing_id = 10001;