প্রথম অক্ষরকে মূলধন করুন। মাইএসকিউএল


110

মাইএসকিউএল পার্লেন্সে এই টিএসকিউএল এর সমতুল্য কি কেউ জানেন?

আমি প্রতিটি এন্ট্রি প্রথম অক্ষর মূলধন চেষ্টা করছি।

UPDATE tb_Company SET CompanyIndustry = UPPER(LEFT(CompanyIndustry, 1))
+ SUBSTRING(CompanyIndustry, 2, LEN(CompanyIndustry))

উত্তর:


275

এটি প্রায় একইরকম, আপনাকে কেবল + অপারেটরের পরিবর্তে কনক্যাট () ফাংশনটি ব্যবহার করতে হবে:

UPDATE tb_Company
SET CompanyIndustry = CONCAT(UCASE(LEFT(CompanyIndustry, 1)), 
                             SUBSTRING(CompanyIndustry, 2));

এই আবর্তিত হবে helloজন্য Hello, wOrLdথেকে WOrLd, BLABLAথেকে BLABLA, ইত্যাদি আপনি উপরের ক্ষেত্রে প্রথম চিঠি চান এবং নিম্ন-কেস অন্যান্য, আপনি শুধু ব্যবহার LCASE ফাংশন আছে:

UPDATE tb_Company
SET CompanyIndustry = CONCAT(UCASE(LEFT(CompanyIndustry, 1)), 
                             LCASE(SUBSTRING(CompanyIndustry, 2)));

নোট করুন যে UPPER এবং UCASE একই কাজ করে।


1
ধন্যবাদ - এটি আমার যা প্রয়োজন তা করেছে। আমি উল্লেখ করতে ভুলে গেছি যে আমাকে প্রথমে নিম্ন কেস করতে হবে। ধন্যবাদ
চীন

55

আপারকেস জন্য Vincents চমৎকার উত্তর প্রথম পত্র প্রথম চিঠি জন্য কাজ করে মহান শুধুমাত্র একটি সম্পূর্ণ কলামে স্ট্রিং এর ক্যাপিটালাইজেশন ..

তবে আপনি যদি কোনও টেবিল কলামের স্ট্রিংগুলিতে প্রতিটি শব্দের প্রথম অক্ষর বড় হাতের অক্ষরে রাখতে চান ?

যেমন: "অ্যাবেভিল হাই স্কুল"

স্ট্যাকওভারফ্লোতে আমি এর কোনও উত্তর পাইনি। উপরের উদাহরণটির একটি দৃ solution় সমাধান দেওয়ার জন্য গুগলে আমি পেয়েছি এমন কয়েকটি উত্তর আমাকে একত্রে আবদ্ধ করতে হয়েছিল। এটি কোনও নেটিভ ফাংশন নয় তবে একটি ব্যবহারকারী তৈরি ফাংশন যা মাইএসকিউএল 5+ সংস্করণ মঞ্জুরি দেয়।

আপনার যদি মাইএসকিউএলে সুপার / অ্যাডমিন ব্যবহারকারীর স্থিতি থাকে বা আপনার নিজের কম্পিউটারে একটি স্থানীয় মাইএসকিএল ইনস্টলেশন থাকে আপনি একটি ফাংশন তৈরি করতে পারেন (সঞ্চিত পদ্ধতির মতো) যা আপনার ডাটাবেসে বসে থাকে এবং ভবিষ্যতের যে কোনও অংশে এসকিউএল কোয়েরিতে ব্যবহার করা যেতে পারে ডিবি।

আমি তৈরি করা ফাংশনটি আমাকে এই নতুন ফাংশনটি ব্যবহারের অনুমতি দেয় যা আমি "ইউসি_ওয়ার্ডস" ডেকেছিলাম যেমন মাইএসকিউএল-এর দেশীয় ফাংশনগুলিতে নির্মিত যেমন আমি এর মতো একটি সম্পূর্ণ কলাম আপডেট করতে পারি:

UPDATE Table_name
SET column_name = UC_Words(column_name) 

ফাংশন কোডটি সন্নিবেশ করানোর জন্য, আমি ফাংশনটি তৈরি করার সময়ই মাইএসকিউএল স্ট্যান্ডার্ড ডিলিমিটার (;) পরিবর্তন করেছি এবং তারপরে ফাংশন তৈরির স্ক্রিপ্টের পরে এটিকে আবার স্বাভাবিক অবস্থায় পুনরায় সেট করব। আমি ব্যক্তিগতভাবেও চেয়েছিলাম আউটপুটটিও ইউটিএফ 8 চ্যারসেটে হয়।

ফাংশন সৃষ্টি =

DELIMITER ||  

CREATE FUNCTION `UC_Words`( str VARCHAR(255) ) RETURNS VARCHAR(255) CHARSET utf8 DETERMINISTIC  
BEGIN  
  DECLARE c CHAR(1);  
  DECLARE s VARCHAR(255);  
  DECLARE i INT DEFAULT 1;  
  DECLARE bool INT DEFAULT 1;  
  DECLARE punct CHAR(17) DEFAULT ' ()[]{},.-_!@;:?/';  
  SET s = LCASE( str );  
  WHILE i < LENGTH( str ) DO  
     BEGIN  
       SET c = SUBSTRING( s, i, 1 );  
       IF LOCATE( c, punct ) > 0 THEN  
        SET bool = 1;  
      ELSEIF bool=1 THEN  
        BEGIN  
          IF c >= 'a' AND c <= 'z' THEN  
             BEGIN  
               SET s = CONCAT(LEFT(s,i-1),UCASE(c),SUBSTRING(s,i+1));  
               SET bool = 0;  
             END;  
           ELSEIF c >= '0' AND c <= '9' THEN  
            SET bool = 0;  
          END IF;  
        END;  
      END IF;  
      SET i = i+1;  
    END;  
  END WHILE;  
  RETURN s;  
END ||  

DELIMITER ; 

এটি স্ট্রিংয়ের মধ্যে একাধিক শব্দের উপরে বড় হাতের অক্ষরের আউটপুট তৈরি করে works

আপনার মাইএসকিউএল লগইন ইউজারনেমটির যথেষ্ট সুবিধা রয়েছে তা ধরে নিচ্ছেন - যদি না হয় এবং আপনি আপনার টেবিলগুলিকে রূপান্তর করতে আপনার ব্যক্তিগত মেশিনে একটি অস্থায়ী ডিবি স্থাপন করতে পারেন না, তবে আপনার ভাগ করা হোস্টিং সরবরাহকারীকে জিজ্ঞাসা করুন যে তারা আপনার জন্য এই ফাংশনটি সেট করবে কিনা।


4
CHARSET utf8_general_ciCHARSET utf8(কমপক্ষে 5.7 এ) তে পরিবর্তন করা উচিত
ম্যানুয়েল

@ ম্যানুয়েলডালালানা আসলে আপনি ত্রুটি পেতে Illegal mix of collations for operation 'concat'পারেন তাই আমার মনে হয় কেবল চরসেটটি ঠিক করুন বা এটিকে সরিয়ে এটি ডিফল্টরূপে তৈরি করুন।
আল-মোতাহাফার

@ আলেজান্দ্রো এই উত্তরটি স্ট্রিংয়ে প্রতিটি শব্দের প্রথম অক্ষরকে মূলধন করে। প্রশ্ন এবং স্বীকৃত উত্তর কেবল স্ট্রিংয়ের প্রথম অক্ষরকে বড় করে দেয়। এগুলি উভয়ই সুপার সহায়ক তবে বিভিন্ন ব্যবহারের ক্ষেত্রে।
লিয়াম

একটি ত্রুটি আছে, আপনাকে অবশ্যই চার্সেট দিয়ে 'এর' ঘোষণা করতে হবে "ডেস্কলারের ভিচারার (255) চারসেট utf8;" অথবা আপনি কিছু অক্ষর শিথিল করা হবে। যাইহোক এই সমাধানের জন্য ধন্যবাদ :-)
জারুম হেরি

এবং এছাড়াও 'সি': "সি সি চ্যার (1) অক্ষরে বর্ণনামূলকভাবে utf8;"
জেরুম হেরি

17

আপনি একটি সমন্বয় ব্যবহার করতে পারেন UCASE(), MID()এবং CONCAT():

SELECT CONCAT(UCASE(MID(name,1,1)),MID(name,2)) AS name FROM names;

এটি অন্য সমস্ত অক্ষর হ্রাস করে না। চেষ্টা করুনSELECT CONCAT(UCASE(MID('TEST',1,1)),MID('TEST',2));
ভ্লাদক্রাস


5

http://forge.mysql.com/tools/tool.php?id=201

কলামে যদি 1 টির বেশি শব্দ থাকে তবে নীচের মত এটি কাজ করবে না। উপরে উল্লিখিত ইউডিএফ এই জাতীয় ক্ষেত্রে সহায়তা করতে পারে।

mysql> select * from names;
+--------------+
| name         |
+--------------+
| john abraham | 
+--------------+
1 row in set (0.00 sec)

mysql> SELECT CONCAT(UCASE(MID(name,1,1)),MID(name,2)) AS name FROM names;
+--------------+
| name         |
+--------------+
| John abraham | 
+--------------+
1 row in set (0.00 sec)

অথবা সম্ভবত এটি সাহায্য করবে ...

https://github.com/mysqludf/lib_mysqludf_str#str_ucwords



1
UPDATE tb_Company SET CompanyIndustry = UCASE(LEFT(CompanyIndustry, 1)) + 
SUBSTRING(CompanyIndustry, 2, LEN(CompanyIndustry))

আমি কেবল মাইএসকিউএল-তে ইউসিএসই ফাংশনটি হাইলাইট করার চেষ্টা করছিলাম: পি :)
জসদীপ সিং

1

একটি ফাংশন তৈরি করুন:

CREATE DEFINER=`root`@`localhost` FUNCTION `UC_FIRST`(`oldWord` VARCHAR(255)) 

RETURNS varchar(255) CHARSET utf8

RETURN CONCAT( UCASE( LEFT(oldWord, 1)), LCASE(SUBSTRING(oldWord, 2)))

ফাংশনটি ব্যবহার করুন

UPDATE tbl_name SET col_name = UC_FIRST(col_name);

1

কেউ যদি প্রতিটি শব্দের স্থান দিয়ে আলাদা করে মূলধন করার চেষ্টা করে ...

CREATE FUNCTION response(name VARCHAR(40)) RETURNS VARCHAR(200) DETERMINISTIC
BEGIN
   set @m='';
   set @c=0;
   set @l=1;
   while @c <= char_length(name)-char_length(replace(name,' ','')) do
      set @c = @c+1;
      set @p = SUBSTRING_INDEX(name,' ',@c);
      set @k = substring(name,@l,char_length(@p)-@l+1);
      set @l = char_length(@k)+2;
      set @m = concat(@m,ucase(left(@k,1)),lcase(substring(@k,2)),' ');
   end while;
   return trim(@m); 
END;
CREATE PROCEDURE updateNames()
BEGIN
  SELECT response(name) AS name FROM names;
END;

ফলাফল

+--------------+
| name         |
+--------------+
| Abdul Karim  | 
+--------------+



0
 select  CONCAT(UCASE(LEFT('CHRIS', 1)),SUBSTRING(lower('CHRIS'),2));

উপরের বিবৃতি প্রথম অক্ষর সিএপিএস এবং ছোট ক্ষেত্রে হিসাবে বিশ্রামের জন্য ব্যবহার করা যেতে পারে।


-1

উসো অ্যালগো সহজ অনুমান;)

DELIMITER $$
DROP FUNCTION IF EXISTS `uc_frist` $$
CREATE FUNCTION `uc_frist` (str VARCHAR(200)) RETURNS varchar(200)
BEGIN
    set str:= lcase(str);
    set str:= CONCAT(UCASE(LEFT(str, 1)),SUBSTRING(str, 2));
    set str:= REPLACE(str, ' a', ' A');
    set str:= REPLACE(str, ' b', ' B');
    set str:= REPLACE(str, ' c', ' C');
    set str:= REPLACE(str, ' d', ' D');
    set str:= REPLACE(str, ' e', ' E');
    set str:= REPLACE(str, ' f', ' F');
    set str:= REPLACE(str, ' g', ' G');
    set str:= REPLACE(str, ' h', ' H');
    set str:= REPLACE(str, ' i', ' I');
    set str:= REPLACE(str, ' j', ' J');
    set str:= REPLACE(str, ' k', ' K');
    set str:= REPLACE(str, ' l', ' L');
    set str:= REPLACE(str, ' m', ' M');
    set str:= REPLACE(str, ' n', ' N');
    set str:= REPLACE(str, ' o', ' O');
    set str:= REPLACE(str, ' p', ' P');
    set str:= REPLACE(str, ' q', ' Q');
    set str:= REPLACE(str, ' r', ' R');
    set str:= REPLACE(str, ' s', ' S');
    set str:= REPLACE(str, ' t', ' T');
    set str:= REPLACE(str, ' u', ' U');
    set str:= REPLACE(str, ' v', ' V');
    set str:= REPLACE(str, ' w', ' W');
    set str:= REPLACE(str, ' x', ' X');
    set str:= REPLACE(str, ' y', ' Y');
    set str:= REPLACE(str, ' z', ' Z');
    return  str;
END $$
DELIMITER ;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.