我在w3schools上练习并使用了Customers表(您可以在右边选择它)。至于我使用的是哪个DBMS,我不确定。该网站说:“我们的SQL教程将教您如何在以下方面使用SQL : MySQL、Server、MS Access、Oracle、Sybase、Informix、Postgres和其他数据库系统。”--这些DBMS之间的语法是相同的还是非常相似的?
我只想提取顾客的名字。我觉得这应该能起作用:
SELECT LEFT(ContactName, CHARINDEX(' ',ContactName)-1)
FROM Customers;它不工作,然而,它什么也不返回。同样,它不处理它,在输出窗口中它向我显示起始页面,所以没有错误消息。我并没有真正理解它背后的实际原因,因为当我将CHARINDEX单独放在SELECT语句中时,它会给出预期的结果。
下一个问题是我如何处理多个空格(当某人有一个中间名),但由于我事先被卡住了,我没有进入这个部分。
发布于 2018-11-04 07:50:49
SQL
MySQL:
DataBase管理系统:
他们之间的语法非常相似。
实际上,您选择的列是错误的,您是按客户名称索引选择ContactName的,其次,您不需要减去它的索引。这将返回客户的名字。
SELECT LEFT(ContactName, CHARINDEX(' ',ContactName))
FROM Customers;发布于 2018-11-04 07:50:11
我注意到您在查询中使用了两个不同的列: ContactName和CustomerName。为什么会这样呢?
如果您的查询是这样写的,我想您的查询应该可以工作:
SELECT
LEFT(ContactName, CHARINDEX(' ', ContactName) - 1) AS FirstName
FROM
Customers;它还应该使用SUBSTRING,如下所示:
SELECT
SUBSTRING(ContactName, 1, CHARINDEX(' ', ContactName) - 1) AS FirstName
FROM
Customers;希望这能有所帮助。
https://stackoverflow.com/questions/53138444
复制相似问题