仅当存在字符时才选择 MySQL 子字符串

Wig*_*ige 4 mysql substring locate

有一个由自动化流程填充的表格,其中包含来自第三方提要的数千家公司名称。大多数公司名称只是名称,但有些公司名称后面有一个连字符。我正在尝试做一个只会返回公司名称的选择。现在我有两个疑问:

SELECT DISTINCT vendor FROM feed_data;
SELECT DISTINCT SUBSTRING(vendor, 1, LOCATE(' - ', vendor)) FROM feed_data;
Run Code Online (Sandbox Code Playgroud)

第一个查询给了我一切,第二个查询只给了我有连字符的公司名称。我正在寻找一种方法来获得两者。

样本数据:

vendor:
American Widgets
Bravo Widgets - The best widgets money can buy
Run Code Online (Sandbox Code Playgroud)

此外,此查询实际上是填充菜单的较大查询的子查询部分,因此可能会限制可能的解决方案。

anu*_*ava 5

使用此查询:

select distinct 
     if(LOCATE(' - ', vendor)>0, SUBSTRING(vendor, 1, LOCATE(' - ', vendor)), vendor)
from feed_data;
Run Code Online (Sandbox Code Playgroud)