ভারচারে কাস্ট করুন int


119

আমার কাছে জিজ্ঞাসার নীচে রয়েছে এবং কাস্ট idকরা দরকারvarchar

স্কিমা

create table t9 (id int, name varchar (55));
insert into t9( id, name)values(2, 'bob');

আমি কি চেষ্টা করেছি

select CAST(id as VARCHAR(50)) as col1 from t9;

select CONVERT(VARCHAR(50),id) as colI1 from t9;

কিন্তু তারা কাজ করে না। সুপারিশ করুন.


4
পরবর্তী সময় আপনি যে প্রকৃত ত্রুটি বার্তাটি দেখছেন তা অন্তর্ভুক্ত করার বিষয়ে নিশ্চিত হন। ভুলটি কী তা বোঝার জন্য এটি সাধারণত অনেক সাহায্য করে। এবার আপনি ভাগ্যবান যে আমাদের মধ্যে অনেকে এখানে কী ঘটছে তা জানতে পেরেছিলেন।
হারুন

উত্তর:


218

আপনাকে castবা ডেটাটাইপ convertহিসাবে প্রয়োজন হবে CHAR, এমন কোনও varcharডেটাটাইপ নেই যা আপনি এতে ডেটা কাস্ট / রূপান্তর করতে পারেন:

select CAST(id as CHAR(50)) as col1 
from t9;

select CONVERT(id, CHAR(50)) as colI1 
from t9;

নিম্নলিখিত এসকিউএল দেখুন - ক্রিয়াকলাপ - এসকিউএল ফিডল এ :

/*! Build Schema */
create table t9 (id INT, name VARCHAR(55));
insert into t9 (id, name) values (2, 'bob');

/*! SQL Queries */
select CAST(id as CHAR(50)) as col1 from t9;
select CONVERT(id, CHAR(50)) as colI1 from t9;

আপনি একটি ভুল ডেটাটাইপে রূপান্তর করার চেষ্টা করছেন তা ছাড়াও, আপনি যে সিনট্যাক্সটি ব্যবহার করছেন convertতা ভুল ছিল। convertফাংশন নিম্নলিখিত যেখানে ব্যবহার exprআপনার কলাম বা মূল্য হল:

 CONVERT(expr,type)

অথবা

 CONVERT(expr USING transcoding_name)

আপনার মূল ক্যোয়ারিতে সিনট্যাক্সটি পিছনে ছিল।


আপনি যে দৈর্ঘ্য দিতে হবে না তা উল্লেখ করার মতো বিষয় - কাস্ট এবং রূপান্তর উভয়ই টি 9 থেকে কল 1 হিসাবে নির্বাচিত CAST (CHAR হিসাবে আইডি) এর লাইনে কিছু অনুমতি দেবে;
জোনাথন সাইসে

1
@ জোনাথনসেসে দৈর্ঘ্য না ব্যবহার করা খারাপ অভ্যাস, আমি লাথি মারার বদ অভ্যাসটি পড়ার পরামর্শ দিই : অ্যারন বারট্র্যান্ডের
টারিন

আকর্ষণীয় পোস্ট - ধন্যবাদ @ ব্লুয়েফিট - আমি নকল / রূপান্তর দৃশ্যে ধরে নিয়েছি এটি স্বেচ্ছাচারী কিছু না করে এটির প্রয়োজনীয় আকারটি ব্যবহার করত।
জোনাথন সাইসে

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

2
@ পেসারিয়ার আইএমও, concat()একটি রূপান্তর করতে ব্যবহার করা অগত্যা স্বজ্ঞাত নয়। আমি আমার কোডটি পরিষ্কার হতে পছন্দ করব এবং এটি পুরোপুরি অর্থবোধ করে না।
তারিন

35

আপনি এটি পেয়ে যাচ্ছেন কারণ VARCHARcastালাই করার জন্য এটি বৈধ প্রকার নয়। মাইএসকিউএল ডক্স অনুসারে ( http://dev.mysql.com/doc/refman/5.5/en/cast-function.html#function_cast ) আপনি কেবল এতে কাস্ট করতে পারেন:

  • বাইনারি [(এন)]
  • CHAR [(এন)]
  • DATE তারিখে
  • তারিখ সময়
  • DECIMAL [(এম [, ডি])]
  • স্বাক্ষরিত
  • [পূর্ণসংখ্যা]
  • TIME এ
  • নিযুক্ত [শর্তযুক্ত]

আমি মনে করি আপনার সেরা-বাজি ব্যবহার করা CHAR


নিশ্চিত নয় কারণ আমি মাইএসকিএল ব্যবহার করি তবে মনে হয় এসকিউএল বার্চর স্ট্যাকওভারফ্লো.com/ a/ 11989599 অনুমতি দেয় যদিও আপনার উত্তরটি মাইএসকিএলের জন্য সঠিক, ধন্যবাদ।
CrandellWS

@ অ্যারন আমার ক্ষেত্রটি চর (1) হলে কী হবে তবে আমি এটিকে এনামে রূপান্তর করতে চাই ('এম', 'চ') ??
দিনেশ কান্দপাল

17

হ্যাঁ

SELECT id || '' FROM some_table;
or SELECT id::text FROM some_table;

postgresql হয়, কিন্তু মাইএসকিউএল এটি অনুমতি দেয় না!

মাইএসকিউলে শর্ট কাট:

SELECT concat(id, '') FROM some_table;

1
আরে, কিছু_ টেবিল থেকে কনক্যাট (আইডি, '') নির্বাচন করুন; মাইএসকিউএল জন্য একটি ভাল হ্যাক, আপনাকে ধন্যবাদ!
চার্লস ক্যাভালঙ্কেট


3

আমার কাছে মাইএসকিউএল নেই, তবে আরডিবিএমএস রয়েছে (পোস্টগ্রিস, অন্যদের মধ্যে) আপনি হ্যাক ব্যবহার করতে পারেন

SELECT id || '' FROM some_table;

সংমিশ্রণ একটি অন্তর্নিহিত রূপান্তর করে।


1
পোস্টগ্রিসের স্পষ্ট এবং সংক্ষিপ্ত ingালাই রয়েছে যদিও, ":: ডেটা টাইপ"। এখানে সঠিক উপায়ে ব্যবহার না করা লজ্জার বিষয় হবে।
মাইএসকিএলের কনক্যাট

2

আমি একটি পূর্ণসংখ্যা কলাম xa varcharকলামের সাথে তুলনা করতে একটি সমস্যার সমাধান করেছি

where CAST(Column_name AS CHAR CHARACTER SET latin1 ) collate latin1_general_ci = varchar_column_name



0

আমি এটি সাধারণ পদগুলিতে উত্তর দিচ্ছি এবং উপরোক্ত অবদানকারীদের জন্য অত্যন্ত কৃতজ্ঞ।
আমি মাইএসকিউএল ওয়ার্কবেঞ্চে মাইএসকিউএল ব্যবহার করছি। পদ্ধতিটি ব্যবহার করে আমি charএবং একই সাথে intএকসাথে চেষ্টা করার চেষ্টা করছিলাম similar GROUP_CONCATসংক্ষেপে, আমার জন্য যা কাজ করেছে তা হ'ল এটি

বলা যাক আপনার char'সি' এবং intএটি 'আমি', সুতরাং, ক্যোয়ারীটি হয়ে যায়:
...GROUP_CONCAT(CONCAT(c,' ', CAST(i AS CHAR))...


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.