এটি এখান থেকে smhg লাগে এবং মাইএসকিউএলে প্রদত্ত সাবস্ট্রিংয়ের সর্বশেষ সূচী থেকে কর্ট লাগে এবং তাদের সংহত করে। এটি মাইএসকিএল-এর জন্য, আমার কেবলমাত্র নামটির একটি শালীন বিভাজন পাওয়া উচিত ছিল প্রথম নামটির সাথে সর্বশেষ নামটি একটি একক শব্দের সাথে, প্রথম নামটি সেই একক শব্দের আগে সমস্ত কিছু যেখানে নামটি নাল, 1 শব্দ, 2 শব্দ, বা 2 টিরও বেশি শব্দ। অর্থ: নাল; মেরি; মেরি স্মিথ; মেরি এ স্মিথ; মেরি সু এলেন স্মিথ;
সুতরাং নামটি যদি একটি শব্দ বা নাল হয় তবে সর্বশেষ নামটি শূন্য হয়। যদি নাম> 1 শব্দ হয় তবে শেষ নামটি সর্বশেষ শব্দ এবং সর্বশেষ শব্দের আগে সমস্ত শব্দটির নাম রাখা উচিত।
নোট করুন যে আমি ইতিমধ্যে জো স্মিথ জুনিয়রের মতো জিনিস ছাঁটাই করেছি; জো স্মিথ এসকিউ। এবং ম্যানুয়ালি, যা অবশ্যই বেদনাদায়ক ছিল, তবে এটি করার পক্ষে এটি যথেষ্ট ছোট ছিল, তাই আপনি কোন পদ্ধতিটি ব্যবহার করবেন তা সিদ্ধান্ত নেওয়ার আগে নাম ক্ষেত্রের ডেটাতে সত্যই সুনিশ্চিত করা নিশ্চিত করতে চান।
নোট করুন যে এটি ফলাফলটিকেও ছাঁটাই করে তোলে, তাই আপনি নামের সামনে বা পরে কোনও ফাঁকা জায়গা শেষ করবেন না।
আমি কেবল অন্যদের জন্য এটি পোস্ট করছি যারা আমার প্রয়োজনীয় জিনিসগুলি সন্ধান করতে এখানে তাদের উপায় গুগল করতে পারে। এটি অবশ্যই কাজ করে এটি প্রথমটি নির্বাচন করে পরীক্ষা করে।
এটি এক সময়ের জিনিস, তাই আমি দক্ষতার বিষয়ে চিন্তা করি না।
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
)
);