2016-05-06 2 views
0

私は、utf8mb4で1つのvarchar(8000)フィールドのmysqlに1つのテーブルを作成しました。ここにコードがあります。mysql varcharとutf8mb4の最大文字数の格納

CREATE TABLE `tbl_content` (
    `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, 
    `content` varchar(8000) CHARACTER SET utf8mb4 DEFAULT NULL, 
    `insdate` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), 
    PRIMARY KEY (`id`), 
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1; 

と、次のようにレコードを挿入する1つのストアドプロシージャです。

CREATE DEFINER=`ntadmin`@`%` PROCEDURE `nsp_channeldet`(
    IN cContent VARCHAR(8000) CHARACTER SET utf8mb4 
) 
    DETERMINISTIC 
    COMMENT 'content' 
BEGIN 
    SET cContent = IF(cContent IS NOT NULL, TRIM(cContent), ""); 
    INSERT INTO tbl_content (content) 
    VALUES (cContent); 
END 

と私は次のように呼んでいます。

CALL nsp_channeldet("content goes here"); 

正常です。この文字列にはどのような文字(たとえば最大文字はバイトではない)が格納されるのかを知りたい。一部のユーザーが地域の言語や絵文字でコンテンツを入力すると、警告が発生する場合があります(例:列が切り捨てられたデータ)

私のテストでは、長さ10395の文字列を作成しました。なぜ???ここで

は、文字列

ஒரு முதியவர் ஒரு.. ஹோட்டலுக்கு சாப்பிட சென்றார்..! 
வெயிலில் வந்த களைப்பு.. அவர் முகத்தில் தெரிந்தது..! அவர் அங்கு ஓர் இடத்தில் அமர்ந்து சர்வரை.. அழைத்து கேட்டார்..! " தம்பி இங்கு சாப்பாடு என்ன விலை..! என்று..! 
வெயிலில் வந்த களைப்பு.. அவர் முகத்தில் தெரிந்தது..! அவர் அங்கு ஓர் இடத்தில் அமர்ந்து சர்வரை.. அழைத்து கேட்டார்..! " தம்பி இங்கு சாப்பாடு என்ன விலை..! என்று..! 
வெயிலில் வந்த களைப்பு.. அவர் முகத்தில் தெரிந்தது..! அவர் அங்கு ஓர் இடத்தில் அமர்ந்து சர்வரை.. அழைத்து கேட்டார்..! " தம்பி இங்கு சாப்பாடு என்ன விலை..! என்று..! 
வெயிலில் வந்த களைப்பு.. அவர் முகத்தில் தெரிந்தது..! அவர் அங்கு ஓர் இடத்தில் அமர்ந்து சர்வரை.. அழைத்து கேட்டார்..! " தம்பி இங்கு சாப்பாடு என்ன விலை..! என்று..! 
வெயிலில் வந்த களைப்பு.. அவர் முகத்தில் தெரிந்தது..! அவர் அங்கு ஓர் இடத்தில் அமர்ந்து சர்வரை.. அழைத்து கேட்டார்..! " தம்பி இங்கு சாப்பாடு என்ன விலை..! என்று..! 
வெயிலில் வந்த களைப்பு.. அவர் முகத்தில் தெரிந்தது..! அவர் அங்கு ஓர் இடத்தில் அமர்ந்து சர்வரை.. அழைத்து கேட்டார்..! " தம்பி இங்கு சாப்பாடு என்ன விலை..! என்று..! 
வெயிலில் வந்த களைப்பு.. அவர் முகத்தில் தெரிந்தது..! அவர் அங்கு ஓர் இடத்தில் அமர்ந்து சர்வரை.. அழைத்து கேட்டார்..! " தம்பி இங்கு சாப்பாடு என்ன விலை..! என்று..! 
வெயிலில் வந்த களைப்பு.. அவர் முகத்தில் தெரிந்தது..! அவர் அங்கு ஓர் இடத்தில் அமர்ந்து சர்வரை.. அழைத்து கேட்டார்..! " தம்பி இங்கு சாப்பாடு என்ன விலை..! என்று..! 
வெயிலில் வந்த களைப்பு.. அவர் முகத்தில் தெரிந்தது..! அவர் அங்கு ஓர் இடத்தில் அமர்ந்து சர்வரை.. அழைத்து கேட்டார்..! " தம்பி இங்கு சாப்பாடு என்ன விலை..! என்று..! 
வெயிலில் வந்த களைப்பு.. அவர் முகத்தில் தெரிந்தது..! அவர் அங்கு ஓர் இடத்தில் அமர்ந்து சர்வரை.. அழைத்து கேட்டார்..! " தம்பி இங்கு சாப்பாடு என்ன விலை..! என்று..! 
வெயிலில் வந்த களைப்பு.. அவர் முகத்தில் தெரிந்தது..! அவர் அங்கு ஓர் இடத்தில் அமர்ந்து சர்வரை.. அழைத்து கேட்டார்..! " தம்பி இங்கு சாப்பாடு என்ன விலை..! என்று..! 
வெயிலில் வந்த களைப்பு.. அவர் முகத்தில் தெரிந்தது..! அவர் அங்கு ஓர் இடத்தில் அமர்ந்து சர்வரை.. அழைத்து கேட்டார்..! " தம்பி இங்கு சாப்பாடு என்ன விலை..! என்று..! 
வெயிலில் வந்த களைப்பு.. அவர் முகத்தில் தெரிந்தது..! அவர் அங்கு ஓர் இடத்தில் அமர்ந்து சர்வரை.. அழைத்து கேட்டார்..! " தம்பி இங்கு சாப்பாடு என்ன விலை..! என்று..! 
வெயிலில் வந்த களைப்பு.. அவர் முகத்தில் தெரிந்தது..! அவர் அங்கு ஓர் இடத்தில் அமர்ந்து சர்வரை.. அழைத்து கேட்டார்..! " தம்பி இங்கு சாப்பாடு என்ன விலை..! என்று..! 
வெயிலில் வந்த களைப்பு.. அவர் முகத்தில் தெரிந்தது..! அவர் அங்கு ஓர் இடத்தில் அமர்ந்து சர்வரை.. அழைத்து கேட்டார்..! " தம்பி இங்கு சாப்பாடு என்ன விலை..! என்று..! 
வெயிலில் வந்த களைப்பு.. அவர் முகத்தில் தெரிந்தது..! அவர் அங்கு ஓர் இடத்தில் அமர்ந்து சர்வரை.. அழைத்து கேட்டார்..! " தம்பி இங்கு சாப்பாடு என்ன விலை..! என்று..! 
வெயிலில் வந்த களைப்பு.. அவர் முகத்தில் தெரிந்தது..! அவர் அங்கு ஓர் இடத்தில் அமர்ந்து சர்வரை.. அழைத்து கேட்டார்..! " தம்பி இங்கு சாப்பாடு என்ன விலை..! என்று..! 
வெயிலில் வந்த களைப்பு.. அவர் முகத்தில் தெரிந்தது..! அவர் அங்கு ஓர் இடத்தில் அமர்ந்து சர்வரை.. அழைத்து கேட்டார்..! " தம்பி இங்கு சாப்பாடு என்ன விலை..! என்று..! 
அதற்கு சர்வர் "50 ரூபாய்" என்றான்..! 

பெரியவர் தனது சட்டை பைக்குள்.. கை விட்டு பார்த்து சர்வரிடம் கேட்டார்.. "தம்பி அதற்கும் சற்று.. குறைவாக சாப்பாடு கிடைக்காதா.."? 

சர்வர் கோபமாக "யோவ் ஏன்யா இங்க வந்து எங்க உயிர எடுக்கிறிங்க.. 

இதை விட மலிவான ஹோட்டல் எவ்வளவோ.. இருக்கு அங்க போய் தொலைங்கயா..? என்றான்..! 

பெரியவர் சொன்னார்.. "தம்பி தெரியாமல் இங்கு வந்துவிட்டேன்.. 

வெளியே வெயில் வேறு..அதிகமா இருக்கு.. நான் இனி வேறு ஹோட்டலுக்கு செல்வது சற்று சிரமம்..! என்றார்..! 

சர்வர்.. சரி..சரி எவ்வோ பணம் குறைவா வச்சுயிருக்க..! என்று கேட்டான்..! 

பெரியவர் என்னிடம் 45 ரூபாய் தான் இருக்கிறது..! என்றார்..! 

சர்வர் சரி..தருகிறேன் ஆனால் உனக்கு தயிர் இல்லை சரியா..? என்றான்..! 

பெரியவர் சரி என சம்மதித்தார்..! 
பெரியவர் சரி என சம்மதித்தார்..! 
பெரியவர் சரி என சம்மதித்தார்..! 
பெரியவர் சரி என சம்மதித்தார்..! 
பெரியவர் சரி என சம்மதித்தார்..! 
பெரியவர் சரி என சம்மதித்தார்..! 
பெரியவர் சரி என சம்மதித்தார்..! 
பெரியவர் சரி என சம்மதித்தார்..! 
பெரியவர் சரி என சம்மதித்தார்..! 
பெரியவர் சரி என சம்மதித்தார்..! 
பெரியவர் சரி என சம்மதித்தார்..! 
பெரியவர் சரி என சம்மதித்தார்..! 
பெரியவர் சரி என சம்மதித்தார்..! 
பெரியவர் சரி என சம்மதித்தார்..! 
சாப்பாடு கொடுத்தான்..! பெரியவர் சாப்பிட்டு விட்டு அந்த சர்வரிடம் 
50 ரூபாய் கொடுத்தார்..! 

答えて

1

8000で文字の最大数、ないバイトです。

タミール文字は3バイトです。 Emojisはutf8mb4で4バイトです。 「スペース」は1バイトです。

LENGTH(col)は、バイト数を示します。 CHAR_LENGTH(col)は文字の長さを与えます - これはあなたの例では8000を上回ります。

mysql> SELECT length('வெயிலில் வந்த களை'), 
      char_length('வெயிலில் வந்த களை')\G 
*************************** 1. row *************************** 
    length('வெயிலில் வந்த களை'): 47 
char_length('வெயிலில் வந்த களை'): 17 
1 row in set (0.00 sec) 
関連する問題