我觉得我在这里错过了一些简单的东西,但是......
如果我在 mySQL 表 (users.fName) 中有以下数据:
--------------
| Jason M. |
--------------
| Eric |
--------------
| Tim S |
--------------
| Peggy Sue |
--------------
我想结束:
--------------
| Jason |
--------------
| Eric |
--------------
| Tim |
--------------
| Peggy Sue |
--------------
我想我必须消除 . 在 Jason M. 之后(我可以很容易地做到这一点UPDATE users SET fName = REPLACE(fName, ".", "");
),但我怎样才能消除 M 和 S 但留下 Sue?
我知道SUBSTRING_INDEX
可以获取该字段的一部分,并且我可以使用诸如SELECT SUBSTRING_INDEX(fName, ' ', -1), LENGTH(SUBSTRING_INDEX(fName, ' ', -1)) FROM users
获取字符串第二部分的长度之类的方法,但我不确定如何将字段更新为字符串的第一部分,仅第二部分只是一个字符长。
更新
一旦我对他的查询进行了一次更改,@Dan 的答案表就为我提供了我需要的东西。更新后的查询是:
SELECT `fName`, SUBSTRING_INDEX(`fName`, ' ', -1) AS MiddleInitial
FROM `users`
WHERE TRIM(`fName`) LIKE '%.'
AND length(`fName`)> 4
OR length(SUBSTRING_INDEX(`fName`, ' ', -1)) = 1;
最后一个AND
变成了OR
所有的工作。