यह यहाँ से smhg लेता है और MySQL में दिए गए सबस्ट्रिंग के लास्ट इंडेक्स से कर्ट करता है और उन्हें जोड़ती है। यह mysql के लिए है, मुझे जो कुछ भी चाहिए वह था, पहले नाम के लिए एक अच्छा विभाजन पाने के लिए last_name अंतिम नाम के साथ एक एकल शब्द, पहला नाम सब कुछ उस एकल शब्द से पहले, जहां नाम शून्य हो सकता है, 1 शब्द, 2 शब्द, या 2 से अधिक शब्द। Ie: अशक्त; मैरी; मैरी स्मिथ; मैरी ए स्मिथ; मेरी सू एलेन स्मिथ;
इसलिए यदि नाम एक शब्द या शून्य है, तो last_name शून्य है। यदि नाम> 1 शब्द है, तो last_name अंतिम शब्द है, और first_name अंतिम शब्द से पहले सभी शब्द हैं।
ध्यान दें कि मैं पहले ही जो स्मिथ जूनियर की तरह सामानों की छंटनी कर चुका हूं; जो स्मिथ एस्क। और इसलिए, मैन्युअल रूप से, जो दर्दनाक था, ज़ाहिर है, लेकिन ऐसा करने के लिए यह काफी छोटा था, इसलिए आप यह सुनिश्चित करना चाहते हैं कि नाम फ़ील्ड में डेटा का उपयोग करने का निर्णय लेने से पहले वास्तव में देखना चाहिए।
ध्यान दें कि यह परिणाम को भी प्रभावित करता है, इसलिए आप नामों के सामने या बाद में रिक्त स्थान के साथ समाप्त नहीं होते हैं।
मैं इसे केवल उन लोगों के लिए पोस्ट कर रहा हूं जो अपने तरीके से Google को खोज सकते हैं कि मुझे क्या चाहिए। यह काम करता है, निश्चित रूप से, पहले इसे चुनें।
यह एक बार की बात है, इसलिए मुझे दक्षता की परवाह नहीं है।
SELECT TRIM(
IF(
LOCATE(' ', `name`) > 0,
LEFT(`name`, LENGTH(`name`) - LOCATE(' ', REVERSE(`name`))),
`name`
)
) AS first_name,
TRIM(
IF(
LOCATE(' ', `name`) > 0,
SUBSTRING_INDEX(`name`, ' ', -1) ,
NULL
)
) AS last_name
FROM `users`;
UPDATE `users` SET
`first_name` = TRIM(
IF(
LOCATE(' ', `name`) > 0,
LEFT(`name`, LENGTH(`name`) - LOCATE(' ', REVERSE(`name`))),
`name`
)
),
`last_name` = TRIM(
IF(
LOCATE(' ', `name`) > 0,
SUBSTRING_INDEX(`name`, ' ', -1) ,
NULL
)
);