পোস্টগ্রিজ এসকিউএল কোয়েরির অংশ হিসাবে আমি কীভাবে একটি পূর্ণসংখ্যাকে স্ট্রিংয়ে রূপান্তর করব?


118

পোস্টগ্রিজ এসকিউএল কোয়েরির অংশ হিসাবে আমি কীভাবে একটি পূর্ণসংখ্যাকে স্ট্রিংয়ে রূপান্তর করব?

সুতরাং, উদাহরণস্বরূপ, আমার প্রয়োজন:

SELECT * FROM table WHERE <some integer> = 'string of numbers'

যেখানে <some integer>1 থেকে 15 ডিজিট দীর্ঘ হতে পারে anywhere


আপনার স্ট্রিংয়ে নেতৃস্থানীয় শূন্য থাকলে আপনি কী করবেন?
বিক্রেতা

উত্তর:


123

সংখ্যাটি 15 ডিজিট পর্যন্ত হতে পারে, সুতরাং আপনি একটি 64 বিট (8-বাইট) পূর্ণসংখ্যায় কাস্ট করতে পারবেন। এটা চেষ্টা কর:

SELECT * FROM table
WHERE myint = mytext::int8

::ঢালাই অপারেটর ঐতিহাসিক কিন্তু সুবিধাজনক। পোস্টগ্রিস এসকিউএল স্ট্যান্ডার্ড সিনট্যাক্সের সাথেও মেনে চলে

myint = cast ( mytext as int8)

আপনার যদি আক্ষরিক পাঠ্য থাকে তবে আপনি কোনওটির সাথে তুলনা করতে চান int, intপাঠ্যটিতে কাস্ট করুন :

SELECT * FROM table
WHERE myint::varchar(255) = mytext

43
আহ। আমার আসলে এটি অন্য উপায়ে প্রয়োজন (মাইনিটটি বার্চারে রূপান্তরিত হয়েছিল) তবে আপনার উত্তর আমাকে সঠিক জায়গায় গাইড করার জন্য যথেষ্ট ছিল। আমি সবেমাত্র করেছি myint::varchar(255) = mytextএবং এটি কাজ করে। ধন্যবাদ!
spyd3rr

3
দৃrict়ভাবে, এটি প্রশ্নের উত্তর দেয় না। উদাহরণটি সমস্যা ছিল না - একটি পূর্ণসংখ্যাটিকে চর / স্ট্রিংয়ে রূপান্তরিত করা হয়েছিল। তবে ধন্যবাদ, @ স্পাইড 3 আরআর
ফ্রেডেরিক স্ট্রাক-

@ ফ্রেড তাই নয়: ওপির আসল সমস্যাটি সংখ্যা এবং পাঠ্য মানগুলির তুলনা করতে ব্যর্থ হয়েছিল। এই উত্তরটি দেখায় যে কীভাবে কোনও সংখ্যায় পাঠ্য কাস্ট করে এটি ঠিক করা যায় (যদিও ওপি পাঠ্যে একটি সংখ্যা কাস্ট করার চেষ্টা করেছিল)।
বোহেমিয়ান

7
@ বোহেমিয়ান প্রশ্নের শিরোনাম এবং পাঠ্য বলেছেন: "পোস্টগ্র্রেএসকিউএল কোয়েরির অংশ হিসাবে আমি কীভাবে একটি পূর্ণসংখ্যাকে স্ট্রিংয়ে রূপান্তর করব?" প্রশ্ন। তারপরে এটি কখন প্রাসঙ্গিক হতে পারে তার একটি উদাহরণ । আমার ক্ষেত্রে, আমি এই থ্রেডটি খুঁজে পেয়েছি কারণ আমাকে আসলে একটি পূর্ণসংখ্যাটিকে একটি স্ট্রিংয়ে রূপান্তর করতে হয়েছিল - তুলনার জন্য নয় বরং একটি সামগ্রিক ফাংশনের অভ্যন্তরে ব্যবহার করতে যা ব্যর্থ হবে, যদি তর্কটি স্ট্রিং না হত। আক্ষরিকভাবে এটি এটিএম পড়ায় কোন ক্ষেত্রে এটি প্রশ্নের উত্তর ছিল না।
ফ্রেডেরিক স্ট্রাক-শোইনিং

125

আপনি এভাবে স্ট্রিংয়ের জন্য একটি পূর্ণসংখ্যা কাস্ট করতে পারেন

intval::text

এবং তাই আপনার ক্ষেত্রে

SELECT * FROM table WHERE <some integer>::text = 'string of numbers'

1
আপনি jpa নেটিভ কোয়েরিতে স্পেলের সাথে কাজ করলে এটি কাজ করবে না। সেক্ষেত্রে আপনাকে কাস্ট ব্যবহার করতে হবে।
রাজ শাহ

12

আপনি এটি করতে পারেন:

SELECT * FROM table WHERE cast(YOUR_INTEGER_VALUE as varchar) = 'string of numbers'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.