එය nvarchar
බහු බයිට් අක්ෂර සඳහා සහය දක්වනවාද? එය එසේ නම්, ගබඩා කිරීම හැර වෙනත් යමක් භාවිතා කිරීම ඇත්ත වශයෙන්ම තිබේද varchars
?
එය nvarchar
බහු බයිට් අක්ෂර සඳහා සහය දක්වනවාද? එය එසේ නම්, ගබඩා කිරීම හැර වෙනත් යමක් භාවිතා කිරීම ඇත්ත වශයෙන්ම තිබේද varchars
?
Answers:
ක nvarchar
තීරු ඕනෑම යුනිකෝඩ් දත්ත ගබඩා කළ හැක. ඒ varchar
තීරු 8-bit codepage වර්ණයන්ට සීමා ෙව්. සමහර අය සිතන්නේ varchar
එය අඩු ඉඩ ප්රමාණයක් ගන්නා බැවින් එය භාවිතා කළ යුතු බවයි. මෙය නිවැරදි පිළිතුර නොවන බව මම විශ්වාස කරමි. කේත පිටුවේ නොගැලපීම් වේදනාවක් වන අතර කේත කේත ගැටළු සඳහා ප්රතිකාරය යුනිකෝඩ් වේ. වර්තමානයේ ලාභ තැටිය සහ මතකය ඇති බැවින්, කේත පිටු සමඟ කාලය නාස්ති කිරීමට කිසිදු හේතුවක් නැත.
සියලුම නවීන මෙහෙයුම් පද්ධති සහ සංවර්ධන වේදිකා අභ්යන්තරව යුනිකෝඩ් භාවිතා කරයි. ඒ nvarchar
වෙනුවට භාවිතා කිරීමෙන් varchar
, ඔබ කියවන විට හෝ දත්ත ගබඩාවට ලියන සෑම අවස්ථාවකම කේතීකරණ පරිවර්තනය කිරීමෙන් වළක්වා ගත හැකිය. පරිවර්තනයන්ට කාලය ගත වන අතර දෝෂ වලට ගොදුරු වේ. පරිවර්තන දෝෂ වලින් සුවය ලැබීම සුළුපටු නොවන ගැටළුවකි.
ඔබ ASCII පමණක් භාවිතා කරන යෙදුමක් සමඟ අන්තර් සම්බන්ධ වන්නේ නම්, දත්ත සමුදායේ යුනිකෝඩ් භාවිතා කිරීම මම තවමත් නිර්දේශ කරමි. මෙහෙයුම් පද්ධතිය සහ දත්ත සමුදාය එකතු කිරීමේ ඇල්ගොරිතම යුනිකෝඩ් සමඟ වඩා හොඳින් ක්රියා කරයි. යුනිකෝඩ් වෙනත් පද්ධති සමඟ අන්තර් ක්රියා කිරීමේදී පරිවර්තන ගැටළු මඟහරවා ගනී . ඔබ අනාගතය සඳහා සූදානම් වනු ඇත. පූර්ණ යුනිකෝඩ් ආචයනයේ සමහර ප්රතිලාභ භුක්ති විඳින අතරම, ඔබ නඩත්තු කළ යුතු ඕනෑම උරුම පද්ධතියක් සඳහා ඔබේ දත්ත 7-බිට් ASCII ට සීමා කර ඇති බව ඔබට සැමවිටම වලංගු කළ හැකිය.
varchar : විචල්ය-දිග, යුනිකෝඩ් නොවන අක්ෂර දත්ත. දත්ත ගබඩාව මගින් දත්ත ගබඩා කරන්නේ කුමන කේත පිටුවද යන්න තීරණය කරයි.
nvarchar : විචල්ය-දිග යුනිකෝඩ් අක්ෂර දත්ත. සැසඳීම් සඳහා දත්ත සමුදා එකතුව මත රඳා පවතී.
මෙම දැනුමෙන් සන්නද්ධව, ඔබේ ආදාන දත්ත සමඟ ගැලපෙන ඕනෑම එකක් භාවිතා කරන්න (ASCII v. යුනිකෝඩ්).
float
තුලට int
හා යනවා "හොඳින් වග බලා ගන්න දශම අතුරුදහන් යන්න." එපා.
මම සෑම විටම nvarchar භාවිතා කරමි, එය මා ගොඩනඟන ඕනෑම දෙයකට මා විසි කරන ඕනෑම දත්තයකට ඔරොත්තු දීමට ඉඩ සලසයි. මගේ CMS පද්ධතිය චීන භාෂාව අහම්බෙන් කරයි, මන්ද මම nvarchar භාවිතා කළෙමි. මේ දිනවල, ඕනෑම නව යෙදුම් සඳහා අවශ්ය ඉඩ ප්රමාණය ගැන සැබවින්ම සැලකිලිමත් නොවිය යුතුය.
"never"
අවම වශයෙන් තාක්ෂණිකව ඔබ උපුටා දැක්වීම් භාවිතා කිරීම සමඟ පරස්පර විරෝධී අවදානමක් ඉවත් කළ බව මම විශ්වාස කරමි .
එය ඔරකල් ස්ථාපනය කළ ආකාරය මත රඳා පවතී. ස්ථාපන ක්රියාවලියේදී, NLS_CHARACTERSET විකල්පය සකසා ඇත. විමසුම සමඟ ඔබට එය සොයාගත හැකිය SELECT value$ FROM sys.props$ WHERE name = 'NLS_CHARACTERSET'
.
ඔබගේ NLS_CHARACTERSET යනු UTF8 වැනි යුනිකෝඩ් කේතීකරණයක් නම් නියමයි. VARCHAR සහ NVARCHAR භාවිතා කිරීම බොහෝ දුරට සමාන ය. දැන් කියවීම නවත්වන්න, ඒ සඳහා යන්න. එසේ නොමැතිනම්, හෝ ඔබට ඔරකල් අක්ෂර කට්ටලය පාලනය කළ නොහැකි නම්, කියවන්න.
VARCHAR - දත්ත NLS_CHARACTERSET කේතීකරණයේ ගබඩා කර ඇත. එකම සේවාදායකයේ වෙනත් දත්ත සමුදායන් තිබේ නම්, ඔබට ඒවා සීමා කළ හැකිය; සහ අනෙක් අතට, ඔබට සැකසුම බෙදා ගත යුතු බැවින්. එවැනි ක්ෂේත්රයකට එම අක්ෂර කට්ටලය භාවිතයෙන් කේතනය කළ හැකි ඕනෑම දත්ත ගබඩා කළ හැකි අතර වෙන කිසිවක් නැත . උදාහරණයක් ලෙස අක්ෂර කට්ටලය MS-1252 නම්, ඔබට ගබඩා කළ හැක්කේ ඉංග්රීසි අකුරු, උච්චාරණය කළ අක්ෂර අතලොස්සක් සහ තවත් කිහිපයක් (€ සහ - වැනි) පමණි. ඔබගේ යෙදුම ලෝකයේ වෙනත් තැනක ක්රියාත්මක වීමට නොහැකි ස්ථාන කිහිපයකට පමණක් ප්රයෝජනවත් වේ. මෙම හේතුව නිසා එය නරක අදහසක් ලෙස සැලකේ.
NVARCHAR - දත්ත යුනිකෝඩ් කේතීකරණයේ ගබඩා කර ඇත. සෑම භාෂාවක්ම සහාය දක්වයි. හොඳ අදහසක්.
ගබඩා ඉඩ ගැන කුමක් කිව හැකිද? VARCHAR සාමාන්යයෙන් කාර්යක්ෂම වේ, අක්ෂර කට්ටලය / කේතන ක්රමය විශේෂිත ස්ථානයක් සඳහා අභිරුචිකරණය කර ඇත. NVARCHAR ක්ෂේත්ර යූටීඑෆ් -8 හෝ යූටීඑෆ් -16 කේතන ක්රමයේ ගබඩා කර ඇති අතර එන්එල්එස් සැකසුම මත පදනම්ව උත්ප්රාසාත්මක ලෙස ප්රමාණවත්ය. යූටීඑෆ් -8 "බටහිර" භාෂාවන් සඳහා ඉතා කාර්යක්ෂම වන අතර තවමත් ආසියානු භාෂාවන්ට සහය දක්වයි. UTF-16 ආසියානු භාෂා සඳහා ඉතා කාර්යක්ෂම වන අතර තවමත් "බටහිර" භාෂාවන්ට සහය දක්වයි. ගබඩා අවකාශය ගැන සැලකිලිමත් වන්නේ නම්, ඔරකල් යූටීඑෆ් -8 හෝ යූටීඑෆ් -16 සුදුසු පරිදි භාවිතා කිරීමට එන්එල්එස් සැකසුමක් තෝරන්න.
සැකසුම් වේගය ගැන කුමක් කිව හැකිද? බොහෝ නව කේතීකරණ වේදිකා යුනිකෝඩ් ස්වදේශීයව භාවිතා කරයි (ජාවා, .නෙට්, මීට වසර ගණනාවකට පෙර සිට C ++ std :: wstring!) එබැවින් දත්ත සමුදා ක්ෂේත්රය VARCHAR නම් එය සෑම කියවීමක හෝ ලිවීමකදීම අක්ෂර කට්ටල අතර පරිවර්තනය කිරීමට ඔරකල්ට බල කරයි, එතරම් හොඳ නැත. NVARCHAR භාවිතා කිරීම පරිවර්තනය වළක්වයි.
නිගමනය: NVARCHAR භාවිතා කරන්න! එය සීමාවන් සහ පරායත්තතාවයන් මගහරියි, ගබඩා ඉඩ සඳහා කදිම වන අතර සාමාන්යයෙන් කාර්ය සාධනය සඳහාද හොඳම වේ.
nvarchar දත්ත යුනිකෝඩ් ලෙස ගබඩා කරයි, එබැවින් ඔබ බහුභාෂා දත්ත (එක් භාෂාවකට වඩා) දත්ත තීරුවක ගබඩා කිරීමට යන්නේ නම් ඔබට N ප්රභේදය අවශ්ය වේ.
මගේ ශත දෙක
නිවැරදි දත්ත වර්ග භාවිතා නොකරන විට දර්ශක අසමත් විය හැකිය:
SQL සේවාදායකයේ: ඔබට VARCHAR තීරුවකට ඉහළින් දර්ශකයක් ඇති අතර එය යුනිකෝඩ් නූලක් ඉදිරිපත් කළ විට, SQL සේවාදායකය දර්ශකය භාවිතා නොකරයි. ස්මාල්ඉන්ට් අඩංගු සුචිගත කළ තීරුවකට ඔබ බිග්ඉන්ට් එකක් ඉදිරිපත් කරන විටත් එයම වේ. බිග්ඉන්ට් කුඩා එකක් වීමට තරම් කුඩා වුවද, SQL සේවාදායකයට දර්ශකය භාවිතා කළ නොහැක. ඔබ වටා ඇති අනෙක් මාර්ගයට මෙම ගැටළුව නොමැත (සුචිගත කළ බිග්ඉන්ට් ඔට් එන්වාර්චාර් තීරුවට ස්මාල්ඉන්ට් හෝ ඇන්සි-කෝඩ් ලබා දීමේදී).
දත්ත සමුදායන් විවිධ ඩීබීඑම්එස් (දත්ත පදනම් කළමනාකරණ පද්ධතිය) අතර වෙනස් විය හැකිය: සෑම දත්ත ගබඩාවක ම තරමක් වෙනස් දත්ත සමුදායන් ඇති බවත් VARCHAR සෑම තැනකම එක හා සමාන නොවන බවත් දැන ගන්න. SQL සේවාදායකයට VARCHAR සහ NVARCHAR ඇති අතර, Apache / Derby දත්ත ගබඩාවක ඇත්තේ VARCHAR පමණක් වන අතර VARCHAR යුනිකෝඩ් හි ඇත.
ප්රධාන වශයෙන් nvarchar යුනිකෝඩ් අක්ෂර ගබඩා කරන අතර වර්චාර් යුනිකෝඩ් නොවන අක්ෂර ගබඩා කරයි.
“යුනිකෝඩ්ස්” යන්නෙන් අදහස් කරන්නේ අරාබි, හෙබ්රෙව්, චීන, ජපන් වැනි වෙනත් භාෂා ගණනාවක අක්ෂර තනි අක්ෂර කට්ටලයක කේතනය කිරීමට ඉඩ සලසන බිට් 16 අක්ෂර කේතීකරණ යෝජනා ක්රමයයි.
ඒ කියන්නේ යුනිකෝඩ් ගබඩා කිරීම සඳහා අක්ෂරයකට බයිට් 2 ක් භාවිතා කරන අතර ගබඩා කිරීමට එක් අක්ෂරයකට එක් බයිට් එකක් පමණක් භාවිතා කරයි. ඒ කියන්නේ යුනිකෝඩ් නොවන යුනිකෝඩ් සමඟ සසඳන විට ගබඩා කිරීමට ද්විත්ව ධාරිතාවක් අවශ්යයි.
ඔයා හරි. තනි බයිට් අක්ෂර දත්ත ගබඩා කරන nvarchar
අතර යුනිකෝඩ් දත්ත varchar
ගබඩා කරයි. ඔබ දැනටමත් සඳහන් කර ඇති ගබඩා වෙනස්කම් හැරුණු විට ( nvarchar
ගබඩා ඉඩ මෙන් දෙගුණයක් අවශ්ය වේ varchar
), ඊට වඩා nvarchar
වැඩි කැමැත්තක් දැක්වීමට ප්රධාන හේතුව varchar
ජාත්යන්තරකරණයයි (එනම් වෙනත් භාෂාවලින් නූල් ගබඩා කිරීම).
මම කියන්නේ, එය රඳා පවතී.
ඔබ ඩෙස්ක්ටොප් යෙදුමක් සංවර්ධනය කරන්නේ නම්, මෙහෙයුම් පද්ධතිය යුනිකෝඩ් හි ක්රියා කරයි (වර්තමාන සියලුම වින්ඩෝස් පද්ධති මෙන්) සහ භාෂාව ස්වදේශීයව යුනිකෝඩ් සඳහා සහය දක්වයි (පෙරනිමි නූල් යුනිකෝඩ් වේ, ජාවා හෝ සී # වැනි), ඉන්පසු nvarchar වෙත යන්න.
ඔබ යූටීඑෆ් -8 ලෙස නූල් එන වෙබ් යෙදුමක් සංවර්ධනය කරන්නේ නම් සහ භාෂාව PHP වන අතර එය තවමත් යුනිකෝඩ් සඳහා ස්වදේශීයව සහය නොදක්වයි (5.x අනුවාද වල), එවිට වර්චාර් වඩා හොඳ තේරීමක් වනු ඇත.
NVARCHAR
යුනිකෝඩ් ගබඩා කළද , VARCHAR
ඔබේ දේශීය භාෂාවල දත්ත භාවිතා කර සුරැකිය හැකි බව සංයෝජනයේ ආධාරයෙන් සලකා බැලිය යුතුය .
පහත දැක්වෙන තත්වය සිතා බලන්න.
ඔබේ ඩීබී හි එකතුව පර්සියානු වන අතර ඔබ 'علی' (අලිගේ පර්සියානු ලිවීම) වැනි අගයක් ඉතිරි කරයි. VARCHAR(10)
. කිසිදු ගැටළුවක් නොමැති අතර DBMS එය ගබඩා කිරීම සඳහා භාවිතා කරන්නේ බයිට් තුනක් පමණි.
කෙසේ වෙතත්, ඔබට ඔබේ දත්ත වෙනත් දත්ත ගබඩාවකට මාරු කර නිවැරදි ප්රති result ලය දැකීමට අවශ්ය නම්, මෙම උදාහරණයේ පර්සියානු ඉලක්කය වන ගමනාන්ත දත්ත ගබඩාවට සමාන එකතුවක් තිබිය යුතුය.
ඔබේ ඉලක්ක එකතුව වෙනස් නම්, ඉලක්ක දත්ත ගබඩාවේ ප්රශ්න ලකුණු (?) ඔබට පෙනේ.
අවසාන වශයෙන්, ඔබ ඔබේ දේශීය භාෂාව භාවිතා කිරීම සඳහා විශාල දත්ත ගබඩාවක් භාවිතා කරන්නේ නම්, වැඩි ඉඩ ප්රමාණයක් භාවිතා කිරීම වෙනුවට ස්ථානය භාවිතා කිරීමට මම නිර්දේශ කරමි.
නිර්මාණය වෙනස් විය හැකි බව මම විශ්වාස කරමි. එය ඔබ වැඩ කරන පරිසරය මත රඳා පවතී.
මම පිළිතුරු දෙන ලද්දේ බොහෝ භාවිතා කිරීමට නිර්දේශ කිරීමට පෙනේ nvarchar
පුරා varchar
අවකාශය තවදුරටත් ප්රශ්නයක් නොවෙයි, ඒ නිසා ටිකක් වැඩිපුර ගබඩා කිරීම සඳහා යුනිකෝඩ් හැකියාව කිසිදු හානියක් නැති නිසා,. හොඳයි, ඔබේ තීරුවට ඉහළින් දර්ශකයක් යෙදීමට අවශ්ය විට මෙය සැමවිටම සත්ය නොවේ. ඔබට සුචිගත කළ හැකි ක්ෂේත්රයේ ප්රමාණය මත SQL සේවාදායකයට බයිට් 900 ක සීමාවක් ඇත. එබැවින් ඔබට එය තිබේ නම් varchar(900)
ඔබට එය සුචිගත කළ හැකිය, නමුත් එසේ නොවේ varchar(901)
. සමඟ nvarchar
, අක්ෂර ගණන අඩකින් අඩුවී ඇති බැවින් ඔබට සුචිගත කළ හැකිය nvarchar(450)
. එබැවින් ඔබට අවශ්ය නොවන බව ඔබට විශ්වාස නම් nvarchar
, මම එය භාවිතා කිරීම නිර්දේශ නොකරමි.
පොදුවේ ගත් කල, දත්ත සමුදායන් තුළ, ඔබට අවශ්ය ප්රමාණයට ඇලී සිටීමට මම නිර්දේශ කරමි, මන්ද ඔබට සැමවිටම පුළුල් කළ හැකිය. නිදසුනක් වශයෙන්, වැඩ කරන සගයකු වරක් සිතුවේ nvarchar(max)
තීරුවක් සඳහා කිසිදු හානියක් සිදු නොවන බවයි , මන්දයත් අපට ගබඩා කිරීම පිළිබඳ කිසිදු ගැටළුවක් නොමැති බැවිනි. පසුව, අපි මෙම තීරුව හරහා දර්ශකයක් යෙදීමට උත්සාහ කළ විට, SQL සේවාදායකය මෙය ප්රතික්ෂේප කළේය. කෙසේ වෙතත්, ඔහු ඉරට්ටේ සිට ආරම්භ කළේ නම්, varchar(5)
එවැනි ගැටළුවක් නොමැතිව අපට එය පසුව අපට අවශ්ය දේ දක්වා පුළුල් කළ හැකිව තිබූ අතර එමඟින් මෙම ගැටළුව විසඳීම සඳහා ක්ෂේත්ර සංක්රමණ සැලැස්මක් කිරීමට අපට අවශ්ය වනු ඇත.
යුනිකෝඩ් අක්ෂර ගබඩා කිරීමට වර්චාර් ඔබට උදව් කරයි. ඔබට දේශීය දත්ත ගබඩා කිරීමට අවශ්ය නම් එය යා යුතු මාර්ගයයි.
අක්ෂරයක් ගබඩා කිරීම සඳහා තනි බයිට් එකක් භාවිතා කරන්නේ නම්, හැකි සංයෝජන 256 ක් ඇති අතර එමඟින් ඔබට විවිධ අක්ෂර 256 ක් ඉතිරි කළ හැකිය. සංයෝජනය යනු අක්ෂර හා ඒවා සංසන්දනය කර වර්ග කර ඇති නීති නිර්වචනය කරන රටාවයි.
1252, එය ලතින් 1 (ANSI) වන අතර එය වඩාත් සුලභ වේ. බොහෝ භාෂාවන් භාවිතා කරන සියලුම අක්ෂර ගබඩා කිරීමට තනි-බයිට් අක්ෂර කට්ටල ප්රමාණවත් නොවේ. උදාහරණයක් ලෙස, සමහර ආසියානු භාෂාවන්ට අක්ෂර දහස් ගණනක් ඇත, එබැවින් ඔවුන් අක්ෂරයකට බයිට් දෙකක් භාවිතා කළ යුතුය.
ජාලයක බහු කේත පිටු භාවිතා කරන පද්ධති භාවිතා කරන විට, සන්නිවේදනය කළමනාකරණය කිරීම දුෂ්කර වේ. දේවල් ප්රමිතිකරණය, ISO සහ යුනිකෝඩ් මූල්යායතන සමූහයේ හඳුන්වා දුන් යුනිකෝඩ් . එක් එක් අක්ෂර ගබඩා කිරීම සඳහා යුනිකෝඩ් බයිට් දෙකක් භාවිතා කරයි. එනම් විවිධ අක්ෂර 65,536 ක් අර්ථ දැක්විය හැකි බැවින් සියලුම අක්ෂර පාහේ යුනිකෝඩ් වලින් ආවරණය කළ හැකිය. පරිගණක දෙකක් යුනිකෝඩ් භාවිතා කරන්නේ නම්, සෑම සංකේතයක්ම එකම ආකාරයකින් නිරූපණය වන අතර පරිවර්තනයක් අවශ්ය නොවේ - යුනිකෝඩ් පිටුපස ඇති අදහස මෙයයි.
SQL සේවාදායකයට අක්ෂර දත්ත වර්ග දෙකක් ඇත:
අපට විවිධ රටවල් වලින් චරිත දත්ත සුරැකීමට අවශ්ය නම්, සෑම විටම යුනිකෝඩ් භාවිතා කරන්න.
මට මෙහි කියන්නට ඇත්තේ (මම බොහෝ විට මා ස්ලයිට් එකකට විවෘත වනු ඇති බව මට වැටහී ඇති බවය!), නමුත් නියත වශයෙන්ම NVARCHAR
සැබවින්ම වඩා ප්රයෝජනවත් වන එකම අවස්ථාව (එහි වැඩි ගණනක් සැලකිල්ලට ගන්න !) VARCHAR
සියල්ලටම වඩා සියලු සංයෝජන වලට වඩා යැපෙන පද්ධති සහ දත්ත සමුදාය තුළම එක හා සමානද ...? එසේ නොවේ නම්, සංයුක්ත පරිවර්තනය කෙසේ හෝ සිදුවිය යුතු අතර එය VARCHAR
හැකි තරම් ශක්ය වේ NVARCHAR
.
මෙයට එකතු කිරීම සඳහා, SQL සේවාදායකය (2012 ට පෙර) වැනි සමහර දත්ත සමුදා පද්ධතිවල පිටු ප්රමාණය දළ වශයෙන් ඇත. 8 කේ. එබැවින්, ඔබ සෙවිය හැකි දත්ත a TEXT
හෝ NTEXT
ක්ෂේත්රයක් වැනි දෙයක් තුළ ගබඩා කර බැලීමට බලා සිටින්නේ නම් VARCHAR
සම්පූර්ණ 8k වටිනාකමින් යුත් ඉඩ ප්රමාණයක් NVARCHAR
සපයන අතර 4k පමණක් ලබා දෙයි (බයිට් දෙගුණයක්, අවකාශය දෙගුණයක්).
සාරාංශගත කිරීම සඳහා, එක්කෝ භාවිතය රඳා පවතින්නේ:
SQL සේවාදායක VARCHAR සහ NVARCHAR දත්ත වර්ගය අතර වෙනස අනුගමනය කරන්න . මෙහිදී ඔබට ඉතා විස්තරාත්මක ආකාරයකින් දැකිය හැකිය.
පොදුවේ ගත් කල, දත්ත යුනිකෝඩ් ලෙස ගබඩා කරයි, එබැවින්, ඔබ බහු භාෂා දත්ත (එක් භාෂාවකට වඩා) දත්ත තීරුවක ගබඩා කිරීමට යන්නේ නම් ඔබට N ප්රභේදය අවශ්ය වේ.
Varchar(n)
සහ අතර ඇති ප්රධාන වෙනස nvarchar(n)
:
Varchar
(විචල්ය-දිග, යුනිකෝඩ් නොවන අක්ෂර දත්ත) ප්රමාණය 8000 දක්වා වේ. 1.එය විචල්ය දිග දත්ත වර්ගයකි
යුනිකෝඩ් නොවන අක්ෂර ගබඩා කිරීමට භාවිතා කරයි
එක් එක් අක්ෂර සඳහා බයිට් 1 ක ඉඩ ප්රමාණයක් හිමි වේ
Nvarchar
: විචල්ය-දිග යුනිකෝඩ් අක්ෂර දත්ත.
1.එය විචල්ය දිග දත්ත වර්ගයකි
2. යුනිකෝඩ් අක්ෂර ගබඩා කිරීමට භාවිතා කරයි.
ඩොලර් 47000 ක කීර්තියක් සහිත ජෙෆ්රි එල් වයිට්ලෙජ් විසින් nvarchar භාවිතය නිර්දේශ කරයි
ඩොලර් 33200 ක කීර්තියක් සහිත සොලමන් රුට්ස්කි නිර්දේශ කරන්නේ: සෑම විටම NVARCHAR භාවිතා නොකරන්න. එය ඉතා භයානක හා බොහෝ විට මිල අධික ආකල්පයක් / ප්රවේශයකි.
Varchar සහ nvarchar SQL Server දත්ත වර්ග අතර ප්රධාන කාර්ය සාධන වෙනස්කම් මොනවාද?
https://www.sqlservercentral.com/articles/disk-is-cheap-orly-4
එතරම් ඉහළ කීර්තියක් ඇති පුද්ගලයන් දෙදෙනාම ඉගෙනුම් වර්ග සේවාදායක දත්ත සමුදා සංවර්ධකයෙකු තෝරා ගන්නේ කුමක්ද?
ඔබ තේරීම් වලට අනුකූල නොවන්නේ නම් කාර්ය සාධන ගැටළු පිළිබඳ පිළිතුරු සහ අදහස් දැක්වීම්වල බොහෝ අනතුරු ඇඟවීම් තිබේ.
කාර්ය සාධනය සඳහා අදහස් / ගැති nvarchar ඇත.
කාර්ය සාධනය සඳහා අදහස් දැක්වීම් ගැති / කොන් වර්චර් ඇත.
තීරු සිය ගණනක් සහිත වගුවක් සඳහා මට විශේෂ අවශ්යතාවයක් ඇත, එය අසාමාන්ය දෙයක් විය හැකිද?
SQL * සේවාදායක 2012 හි 8060 බයිට් වගු වාර්තා ප්රමාණයේ සීමාවට ළඟාවීම වළක්වා ගැනීම සඳහා මම වර්චර් තෝරා ගනිමි.
Nvarchar භාවිතය, මට නම්, මෙම බයිට් 8060 සීමාව ඉක්මවා යයි.
අදාළ කේන්ද්ර වගු වල දත්ත වර්ග ප්රාථමික මධ්යම වගුවේ දත්ත වර්ග සමඟ සැසඳිය යුතු යැයි මම සිතමි.
මීට පෙර පළපුරුදු දත්ත සමුදා සංවර්ධකයින් විසින් දකුණු ඕස්ට්රේලියානු රජය විසින් මෙම සේවා ස්ථානයේ වර්චාර් තීරුව භාවිතා කර ඇති බව මම දැක ඇත්තෙමි, එහිදී වගු පේළි ගණන මිලියන හෝ ඊට වැඩි වනු ඇත (සහ ඉතා විශාල වශයෙන් nvarchar තීරු කිහිපයක් තිබේ නම්) වගු), එබැවින් සමහර විට අපේක්ෂිත දත්ත පේළි පරිමාවන් මෙම තීරණයෙහි කොටසක් බවට පත්වේ.
nvarchar
varchar
අපගේ කේත දෝෂය නිදහස් කිරීම සඳහා සාපේක්ෂව නොගැලපීම භාවිතා කිරීම ආරක්ෂිත වේ (නොගැලපීම ටයිප් කරන්න) nvarchar
යුනිකෝඩ් අක්ෂරවලට ද ඉඩ සලසයි. අපි where
SQL සේවාදායක විමසුමේදී කොන්දේසිය භාවිතා කරන විට සහ අප =
ක්රියාකරු භාවිතා කරන්නේ නම් , එය සමහර විට දෝෂයක් ඇති කරයි. මෙයට බොහෝ දුරට හේතුව අපගේ සිතියම් තීරුව වෙනස් වීමයි varchar
. අපි එය nvarchar
මෙම ගැටලුවේදී අර්ථ දැක්වුවහොත් මගේ දෙයක් සිදු නොවේ. තවමත් අපි ඇලුම් varchar
අපි හොඳ භාවිතා මෙම ප්රශ්නය මග LIKE
ප්රධාන වචනය වෙනුවට =
.