আমি কীভাবে মাইএসকিউএল টেবিলগুলিতে জিইউডি সঞ্চয় করব?


146

আমি কি বারচার ব্যবহার করব (36) না এটি করার আরও ভাল কোনও উপায় আছে?


1
"থাবাডডগ" একটি ভাল উত্তর সরবরাহ করে। স্ট্যাক ওভারফ্লোতে একটি সমান্তরাল থ্রেড রয়েছে যা বিষয়টি নিয়ে আলোচনা করে। আমি সেই থ্রেডগুলিতে কিছু মন্তব্য যুক্ত করেছি যে আরও বিশদ সহ সংস্থানগুলির লিঙ্কটির উত্তর দেয়। এখানে প্রশ্ন লিঙ্কটি রয়েছে: stackoverflow.com/questions/547118/storing-mysql-guid-uuids - আমি আশা করি যখন মানুষ এডাব্লুএস এবং অরোরাকে বিবেচনা শুরু করবে তখন এই বিষয়টি আরও সাধারণ হয়ে উঠবে।
জ্যাক জান্নসেন

উত্তর:


104

আমার ডিবিএ আমাকে জিজ্ঞাসা করেছিল যে আমি যখন আমার সামগ্রীর জন্য জিইউইডিগুলি সঞ্চয় করার সর্বোত্তম উপায় সম্পর্কে জিজ্ঞাসা করি তখন কেন আমি 16 বাইট সংরক্ষণ করতে হবে যখন আমি একটি পূর্ণসংখ্যার সাথে 4 বাইটে একই জিনিস করতে পারি। যেহেতু তিনি সেই চ্যালেঞ্জটি আমার কাছে রেখেছিলেন আমি ভেবেছিলাম এখনই এটির উল্লেখ করার জন্য ভাল সময়। বলা হচ্ছে যে...

আপনি যদি স্টোরেজ স্পেসের সর্বাধিক অনুকূল ব্যবহার করতে চান তবে আপনি CHAR (16) বাইনারি হিসাবে একটি গাইড স্টোর করতে পারেন।


176
16 বাইটের সাহায্যে আপনি বিভিন্ন ডেটাবেজে, বিভিন্ন মেশিনে, বিভিন্ন সময়ে বিভিন্ন জিনিস তৈরি করতে পারেন এবং এখনও
নির্বিঘ্নে

4
উত্তর দরকার, আসলে একটি চর 16 বাইনারি কী? চর না? বাইনারি না? আমি কোনও মাইএসকিএল গুঁই সরঞ্জামগুলিতে এবং মাইএসকিএল সাইটে কোনও ডকুমেন্টেশন দেখতে চাই না। @ বিলিওনিওল
নওফাল

3
@ নওফাল: চর হ'ল ডেটাটাইপ। BINARY টাইপের বিপরীতে টাইপ স্পেসিফায়ার। এটির একমাত্র প্রভাবটি হ'ল মাইএসকিউএল কীভাবে কোলেশন করে mod আরও বিশদের জন্য dev.mysql.com/doc/refman/5.0/en/charset-binary-op.html দেখুন । আপনার ডাটাবেস সম্পাদনা সরঞ্জাম যদি এটি করতে দেয় তবে অবশ্যই আপনি সরাসরি একটি বিনারি টাইপ ব্যবহার করতে পারেন। (পুরানো সরঞ্জামগুলি বাইনারি ডেটা টাইপটি জানেন না তবে বাইনারি কলাম পতাকাটি জানেন)
বিলি ওনিল

2
একটি চর এবং একটি বিনারি ক্ষেত্র মূলত একই। যদি আপনি এটিকে একেবারে বেসিক স্তরে নিয়ে যেতে চান, একটি CHAR হ'ল একটি বাইনারি ক্ষেত্র যা 0 থেকে 255 মানের প্রত্যাশার প্রত্যাশার উদ্দেশ্যে একটি লুক টেবিল থেকে ম্যাপযুক্ত মান সহ বলা মানটিকে উপস্থাপনের উদ্দেশ্যে (বেশিরভাগ ক্ষেত্রে এখন, ইউটিএফ 8)। একটি বিনারি ক্ষেত্র একটি অনুসন্ধান সারণী থেকে প্রাপ্ত তথ্যের উপস্থাপনের কোনও উদ্দেশ্য ছাড়াই একই ধরণের মান আশা করে। আমি 4.x দিনগুলিতে ফিরে CHAR (16) ব্যবহার করেছি কারণ মাইএসকিউএল এখনকার মতো ভাল ছিল না।
thaBadDawg

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

48

আমি এটি একটি চর হিসাবে সংরক্ষণ করতে হবে (36)


5
আপনার কেন স্টোর করা উচিত তা আমি দেখতে পাচ্ছি না -
আফশিন মেহরাবানি

2
@ আফশিন মেহরাবানি এটি সহজ, সরল, মানব-পঠনযোগ্য। এটি অবশ্যই প্রয়োজনীয় নয়, তবে যদি অতিরিক্ত অতিরিক্ত বাইটগুলি সঞ্চয় করে ক্ষতি না করে তবে এটিই সেরা সমাধান।
ব্যবহারকারী 1717828

2
ড্যাশগুলি সংরক্ষণ করা ভাল ধারণা নাও কারণ এটি আরও বেশি ওভারহেডের কারণ হতে পারে। আপনি যদি এটিকে মানব পাঠযোগ্য করে তুলতে চান তবে অ্যাপ্লিকেশনটিকে ড্যাশগুলি সহ পঠন করুন।
লুকা ফেরি

@ আফশিন মেহরাবানি আরও একটি বিবেচনা ডাটাবেস থেকে এটি পার্স করছে। বেশিরভাগ বাস্তবায়নগুলি একটি বৈধ নির্দেশিকায় ড্যাশগুলি আশা করবে।
রায়ান গেটস

সহজেই কোনও চর (32) কে চর (36) এ রূপান্তর করতে আনতে আপনি হাইফেনগুলি সন্নিবেশ করতে পারেন। MySQL এর সন্নিবেশ করা এফএন ব্যবহার করুন।
joedotnot

33

থাবাডডউগের উত্তরে যুক্ত করে, 36 টি দৈর্ঘ্যের স্ট্রিং থেকে 16 এর বাইট অ্যারেতে ফিরে পেতে এই হ্যান্ডি ফাংশনগুলি (আমার এক জ্ঞানী কলেজের জন্য ধন্যবাদ) ব্যবহার করুন।

DELIMITER $$

CREATE FUNCTION `GuidToBinary`(
    $Data VARCHAR(36)
) RETURNS binary(16)
DETERMINISTIC
NO SQL
BEGIN
    DECLARE $Result BINARY(16) DEFAULT NULL;
    IF $Data IS NOT NULL THEN
        SET $Data = REPLACE($Data,'-','');
        SET $Result =
            CONCAT( UNHEX(SUBSTRING($Data,7,2)), UNHEX(SUBSTRING($Data,5,2)),
                    UNHEX(SUBSTRING($Data,3,2)), UNHEX(SUBSTRING($Data,1,2)),
                    UNHEX(SUBSTRING($Data,11,2)),UNHEX(SUBSTRING($Data,9,2)),
                    UNHEX(SUBSTRING($Data,15,2)),UNHEX(SUBSTRING($Data,13,2)),
                    UNHEX(SUBSTRING($Data,17,16)));
    END IF;
    RETURN $Result;
END

$$

CREATE FUNCTION `ToGuid`(
    $Data BINARY(16)
) RETURNS char(36) CHARSET utf8
DETERMINISTIC
NO SQL
BEGIN
    DECLARE $Result CHAR(36) DEFAULT NULL;
    IF $Data IS NOT NULL THEN
        SET $Result =
            CONCAT(
                HEX(SUBSTRING($Data,4,1)), HEX(SUBSTRING($Data,3,1)),
                HEX(SUBSTRING($Data,2,1)), HEX(SUBSTRING($Data,1,1)), '-', 
                HEX(SUBSTRING($Data,6,1)), HEX(SUBSTRING($Data,5,1)), '-',
                HEX(SUBSTRING($Data,8,1)), HEX(SUBSTRING($Data,7,1)), '-',
                HEX(SUBSTRING($Data,9,2)), '-', HEX(SUBSTRING($Data,11,6)));
    END IF;
    RETURN $Result;
END
$$

CHAR(16)আসলে একটি BINARY(16), আপনার পছন্দসই গন্ধ চয়ন করুন

কোডটি আরও ভালভাবে অনুসরণ করতে নীচে ডিজিটাল অর্ডার করা জিইউডি দিয়ে উদাহরণটি ধরুন। (অবৈধ চরিত্রগুলি উদাহরণস্বরূপ উদ্দেশ্যে ব্যবহৃত হয় - প্রতিটি জায়গাতেই একটি অনন্য চরিত্র রয়েছে)) ফাংশনগুলি বর্ধিত সূচক ক্লাস্টারিংয়ের জন্য কিছুটা অর্ডার অর্জনের জন্য বাইট ক্রমকে রূপান্তরিত করবে। পুনরায় সাজানো গাইডের উদাহরণ নীচে দেখানো হয়েছে।

12345678-9ABC-DEFG-HIJK-LMNOPQRSTUVW
78563412-BC9A-FGDE-HIJK-LMNOPQRSTUVW

ড্যাশগুলি সরানো হয়েছে:

123456789ABCDEFGHIJKLMNOPQRSTUVW
78563412BC9AFGDEHIJKLMNOPQRSTUVW

উপরের গাইডডোবাইনারিটি স্ট্রিং থেকে হাইফেনগুলি সরিয়ে না নিয়ে তৈরি করুন: ফাংশন তৈরি করুন GuidToBinary($ গাইড চর (36)) বাইনারি রিটার্ন করুন (16) কনটকেট রিটার্ন করুন (ইউএনএইচএক্স (সাবস্ক্রিং ($ গাইড, 7, 2))), ইউএনএইচএক্স (সাবস্ট্রাকশন ($ গাইড, ৫, ২)), ইউএনএইএক্সএক্স (সাবস্ক্রিং ($ গাইড, ৩, ২)), ইউএনএইচএক্স (সাবস্ক্রিং ($ গাইড, ১, ২)), ইউএনএইচএক্স (সাবস্ক্রিং ($ গাইড, ১২, ২)), ইউএনএইচএক্স (সাবস্ট্রাস্টিং ($ গাইড, 10, 2)), ইউএনএইএইচএক্স (সাবস্ক্রিং ($ গাইড, 17, 2)), ইউএনএইচএক্স (সাবস্ক্রিং ($ গাইড, 15, 2)), ইউএনএইচএক্স (সাবস্ক্রিং ($ গাইড, 20, 4)), ইউএনএইচএক্স (সাবস্ট্রাকশন ($ গাইড, 25, 12%));
জনাথন অলিভার

4
কৌতূহলের জন্য, এই ফাংশনগুলি কেবল ইউএনএএচএক্স (রিপ্লেস (ইউইউডি (), '-', '') এর চেয়ে উচ্চতর কারণ এটি বিটগুলি একটি ক্রমে সাজিয়ে তোলে যা একটি ক্লাস্টারড সূচকে আরও ভাল সম্পাদন করবে।
স্ল্যাশটারিক্স

এটি অত্যন্ত সহায়ক, তবে আমি অনুভব করি যে এটি উত্স CHARএবং BINARYসমতুল্যতার উত্সের মাধ্যমে উন্নত করা যেতে পারে ( ডক্সগুলি মনে করে যে গুরুত্বপূর্ণ পার্থক্য রয়েছে এবং ক্লাস্টারড ইনডেক্সের পারফরম্যান্স কেন পুনরায় সাজানো বাইটগুলির সাথে আরও ভাল of
প্যাট্রিক এম

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

@ জোনাথন অলিভার আপনি কি দয়া করে বাইনারিটোগুইড () ফাংশনের জন্য কোডটি ভাগ করে নিতে পারেন?
অরুণ অবানাথন

27

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


19

"আরও ভাল" নির্ভর করে আপনি যার জন্য অনুকূল করছেন।

আপনি সংরক্ষণের আকার / পারফরম্যান্স বনাম উন্নয়নের স্বচ্ছতা সম্পর্কে কতটা যত্নশীল? আরও গুরুত্বপূর্ণ - আপনি কি যথেষ্ট জিইউইডি তৈরি করছেন, বা এগুলি যথেষ্ট ঘন ঘন এনেছেন?

উত্তরটি যদি "না" char(36)হয় তবে যথেষ্ট ভাল and অন্যথায়, binary(16)যুক্তিসঙ্গত, তবে সাধারণ স্ট্রিং প্রতিনিধিত্ব থেকে পিছনে পিছনে রূপান্তর করতে আপনাকে মাইএসকিউএল এবং / অথবা আপনার পছন্দসই প্রোগ্রামিং ভাষার উপর ঝুঁকতে হবে।


2
যদি আপনি সফ্টওয়্যার হোস্ট করেন (উদাহরণস্বরূপ কোনও ওয়েব পৃষ্ঠা) এবং ক্লায়েন্টে বিক্রয় / ইনস্টল না করেন তবে আপনি সফ্টওয়্যারটির প্রথম পর্যায়ে সহজ বিকাশের জন্য সর্বদা চার (36) দিয়ে শুরু করতে পারেন এবং আরও কমপ্যাক্টে রূপান্তর করতে পারেন সিস্টেমটি ব্যবহারে বৃদ্ধি পেতে এবং অপ্টিমাইজেশনের প্রয়োজন শুরু করার সাথে ফর্ম্যাট।
জাভি মন্টেরো

1
বৃহত্তর চরের বৃহত্তম ডাউন সাইড (36) হ'ল সূচকটি কতটা স্থান নেবে। আপনার যদি ডাটাবেসে প্রচুর রেকর্ড থাকে তবে আপনি সূচকের আকার দ্বিগুণ করছেন।
বিপিাইক 18


7

কেসিডি পোস্ট করা গাইডডোবাইনারি রুটিনটি জিইউইডি স্ট্রিংয়ের টাইমস্ট্যাম্পের বিট লেআউটের জন্য অ্যাকাউন্টে চিহ্নিত করতে হবে। যদি স্ট্রিংটি ইউইউডি () মাইএসকিএল রুটিন দ্বারা ফিরিয়ে দেওয়া সংস্করণের মতো কোনও সংস্করণ 1 ইউইউডি উপস্থাপন করে তবে সময় উপাদানগুলি ডি বাদ দিয়ে 1-G অক্ষরে এম্বেড করা হয় the

12345678-9ABC-DEFG-HIJK-LMNOPQRSTUVW
12345678 = least significant 4 bytes of the timestamp in big endian order
9ABC     = middle 2 timestamp bytes in big endian
D        = 1 to signify a version 1 UUID
EFG      = most significant 12 bits of the timestamp in big endian

আপনি যখন বাইনারিতে রূপান্তর করেন, তখন সূচকের সেরা আদেশটি হয়: EFG9ABC12345678D + বাকি।

আপনি 12345678 এ 78563412 এ অদলবদল করতে চান না কারণ বড় এন্ডিয়ান ইতিমধ্যে সেরা বাইনারি সূচক বাইট অর্ডার দেয়। তবে আপনি চাইছেন যে সর্বাধিক উল্লেখযোগ্য বাইটগুলি নিম্ন বাইটের সামনে চলে গেছে। সুতরাং, মাঝারি বিট এবং নিম্ন বিটগুলির পরে ইএফজি প্রথমে যায়। এক মিনিটের ব্যবধানে uuid () সহ এক ডজন বা তার বেশি ইউআইডি তৈরি করুন এবং আপনার এই অর্ডারটি কীভাবে সঠিক র‌্যাঙ্ক দেয় তা দেখতে হবে।

select uuid(), 0
union 
select uuid(), sleep(.001)
union 
select uuid(), sleep(.010)
union 
select uuid(), sleep(.100)
union 
select uuid(), sleep(1)
union 
select uuid(), sleep(10)
union
select uuid(), 0;

/* output */
6eec5eb6-9755-11e4-b981-feb7b39d48d6
6eec5f10-9755-11e4-b981-feb7b39d48d6
6eec8ddc-9755-11e4-b981-feb7b39d48d6
6eee30d0-9755-11e4-b981-feb7b39d48d6
6efda038-9755-11e4-b981-feb7b39d48d6
6f9641bf-9755-11e4-b981-feb7b39d48d6
758c3e3e-9755-11e4-b981-feb7b39d48d6 

প্রথম দুটি ইউইউডি সময়মতো নিকটে উত্পন্ন হয়েছিল। এগুলি কেবল প্রথম ব্লকের সর্বশেষ 3 নীবলিতে পরিবর্তিত হয়। এগুলি টাইমস্ট্যাম্পের সর্বনিম্ন উল্লেখযোগ্য বিট, যার অর্থ আমরা যখন এটিকে একটি সূচকযোগ্য বাইট অ্যারেতে রূপান্তর করি তখন আমরা সেগুলি ডানদিকে ঠেলে দিতে চাই। একটি পাল্টা উদাহরণ হিসাবে, সর্বশেষ আইডি সর্বাধিক বর্তমান, তবে কেসিডির অদলবদল অ্যালগরিদম এটি 3 য় আইডি (ডিসির আগে 3e, প্রথম ব্লকের সর্বশেষ বাইট) আগে রেখে দেবে।

সূচকের জন্য সঠিক ক্রমটি হ'ল:

1e497556eec5eb6... 
1e497556eec5f10... 
1e497556eec8ddc... 
1e497556eee30d0... 
1e497556efda038... 
1e497556f9641bf... 
1e49755758c3e3e... 

সহায়তার তথ্যের জন্য এই নিবন্ধটি দেখুন: http://mysql.rjweb.org/doc.php/uuid

*** মনে রাখবেন যে আমি টাইমস্ট্যাম্পের উচ্চ 12 বিট থেকে নিবল সংস্করণ বিভক্ত করি না। এটি আপনার উদাহরণ থেকে ডি নিবলল। আমি শুধু এটি সামনে নিক্ষেপ। সুতরাং আমার বাইনারি ক্রম DEFG9ABC এবং তাই শেষ হচ্ছে। এটি সূচিত করে যে আমার সমস্ত সূচকযুক্ত ইউআইডিগুলি একই স্তম্ভের সাথে শুরু হয়। নিবন্ধটি একই কাজ করে।


স্টোরেজ স্পেস সংরক্ষণ করা কি এর উদ্দেশ্য? বা তাদের বাছাই দরকারী করতে?
MD004

1
@ MD004। এটি আরও ভাল সাজানোর সূচক তৈরি করে। স্থান একই থাকে।
বিঘ_29

5

যারা কেবল এটি পেরেছেন তাদের জন্য, পারকোনার গবেষণা অনুসারে এখন আরও অনেক ভাল বিকল্প রয়েছে।

এটি অনুকূল সূচকের জন্য ইউআইডি অংশগুলি পুনর্গঠন করে, তারপরে হ্রাস স্টোরেজের জন্য বাইনারি রূপান্তর করে।

এখানে সম্পূর্ণ নিবন্ধ পড়ুন


আমি আগে এই নিবন্ধটি পড়েছি। আমি এটি খুব আকর্ষণীয় মনে করি তবে তারপরে যদি আমরা বাইনারি হয় এমন কোনও আইডি দ্বারা ফিল্টার করতে চাই তবে কীভাবে আমাদের একটি ক্যোয়ারী করা উচিত? আমি অনুমান করি আমাদের আবারও হেক্স করা দরকার এবং তারপরে মানদণ্ড প্রয়োগ করুন। এত দাবি? বাইনারি (16) কেন সংরক্ষণ করবেন (নিশ্চিত এটি 8 বাইটের বিগিন্টের পরিবর্তে বর্ণচর (36%) এর চেয়ে ভাল?
ম্যাক্সিমাস ডেসিমাস

2
মারিয়াডিবি-র একটি আপডেট করা নিবন্ধ রয়েছে যা আপনার প্রশ্নের উত্তর দেবে mariadb.com/kb/en/mariadb/guiduuid-performance
স্লিপক্যাল

FWWW, ইউআইডিএভিভি 4 সম্পূর্ণরূপে এলোমেলো এবং কোনও খনক প্রয়োজন।
মাহমুদ আল-কুদসি

2

আমি @ বিঘ_29 দ্বারা উল্লিখিত ফাংশনগুলি আমার নির্দেশিকাগুলি নতুনগুলিতে রূপান্তরিত করার কারণে নীচের ফাংশনগুলি ব্যবহার করার পরামর্শ দেব (যে কারণে আমি বুঝতে পারি না)। এছাড়াও, আমি আমার টেবিলে যে পরীক্ষাগুলি দিয়েছি সেগুলিতে এইগুলি কিছুটা দ্রুত। https://gist.github.com/damienb/159151

DELIMITER |

CREATE FUNCTION uuid_from_bin(b BINARY(16))
RETURNS CHAR(36) DETERMINISTIC
BEGIN
  DECLARE hex CHAR(32);
  SET hex = HEX(b);
  RETURN LOWER(CONCAT(LEFT(hex, 8), '-', MID(hex, 9,4), '-', MID(hex, 13,4), '-', MID(hex, 17,4), '-', RIGHT(hex, 12)));
END
|

CREATE FUNCTION uuid_to_bin(s CHAR(36))
RETURNS BINARY(16) DETERMINISTIC
RETURN UNHEX(CONCAT(LEFT(s, 8), MID(s, 10, 4), MID(s, 15, 4), MID(s, 20, 4), RIGHT(s, 12)))
|

DELIMITER ;

-4

যদি আপনার মানক জিইউইডি হিসাবে গৃহীত চর / বার্চারের মান থাকে তবে আপনি কনক্যাট + সাবস্ক্রাইটির সমস্ত মন-বগল ক্রম ছাড়াই সহজ সরল CAST (মাইস্ট্রিং হিসাবে বিন্টার 16) ব্যবহার করে এটি বিনাইন (16) হিসাবে সংরক্ষণ করতে পারেন।

বিনের (১)) ক্ষেত্রগুলি স্ট্রিংয়ের চেয়ে অনেক দ্রুত গতি তুলনা / সাজানো / সূচী করা হয় এবং ডাটাবেসে দু'বার কম স্থানও নেয়


2
এই কোয়েরিটি চালানো দেখায় যে CAST ইউইড স্ট্রিংটিকে ASCII বাইটে রূপান্তর করে: সেট @a ​​= uuid (); @ এ, হেক্স (কাস্ট (@ একটি হিসাবে বিন (16%)) নির্বাচন করুন; আমি 16f20d98-9760-11e4-b981-feb7b39d48d6: 3136663230643938 2 ডি 39373630 2 ডি 3131 (ফর্ম্যাটিংয়ের জন্য ফাঁকা স্থানগুলি) পেয়েছি। 0x31 = ascii 1, 0x36 = ascii 6. আমরা এমনকি 0x2D পাই, যা হাইফেন। এটি স্ট্রিং হিসাবে গাইড সঞ্চার করার চেয়ে অনেক বেশি আলাদা নয়, আপনি 16 তম অক্ষরে স্ট্রিংটি কেটে ফেলুন, যা আইডির অংশটি মেশিন দ্বারা নির্দিষ্ট করে দেয় cle
বিঘ_29

হ্যাঁ, এটি কেবল ছাঁটাই। select CAST("hello world, this is as long as uiid" AS BINARY(16));উত্পাদনhello world, thi
MD004
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.