سلام و احترام
در آموزش sql فرمودید که برای کد ملی از نوع داده BigInt استفاده کنیم.
اما هنگام استفاده از این نوع داده ، وقتی کد ملی با صفر یا دو صفر شروع میشود مشکل دارم
و صفر های اول حذف میشود .
لطفا راهنمایی بفرمایید
ممنون
سلام و عرض ادب
راه حل رو در آموزش هم خدمتتون عرض کردم. مشکل فقط در هنگام نمایش کدملی هستش که دو راه دارد:
1- یک فیلد از نوع char(10) کنار فیلد کد ملی در بانک داشته باشید که همان مقادیر رو در هنگام ویرایش و درج به صورت ده کاراکتری ذخیره کنه و برای نمایش از اون استفاده کنید و برای جستجو از فیلد bigint .
2- هر وقت خواستید کدملی رو نمایش بدید از سمت چپ به اون صفر اضافه کنید تا تعدادش بشه ده رقم.
برای راه اول می تونید از trigger استفاده کنید تا به صورت خودکار هر زمان روی جدولتون عمل insert یا Update انجام شد خودش بره فیلد رشته ای رو بروز کنه.
البته بعضی از سایت ها همون کدملی 9 یا 8 رقمی رو به کاربر نمایش میدن و یا شماره موبایل 10 رقمی رو. شاید تا به حال با این سایت ها برخورد داشته باشید.
سلام و احترام
ممنون از توضیح شما.
اگر به جای مراحل بالا از nvarchar10 فیلد کد ملی را بسازیم مناسب تر نیست؟ البته نظر تخصصی شما اصل است فقط سوال برایم پیش آمد
ارادتمند
محبوب
سلام علیکم
اول از همه اینکه که اگر هم نمی خواید از bigint استفاده کنید می تونید از CHAR10 استفاده کنید چون مطمئن هستید که طول کدملی فقط و فقط 10 رقم هست پس متغیر نیست که بخواید از var استفاده کنید. و رقم هست و لازم نیست از n استفاده کنید که برای داده های یونیکد کاربرد داره.
دوم اینکه اگر رکوردهای کمی دارید اشکالی نداره که از نوع رشته ای به جای عددی استفاده کنید ولی اگر رکوردهای زیادی دارید به دلیل اینکه روی این فیلد ایندکس می خوره و اگر فشرده شود و Page های کمتری بگیره در نمایش نتیجه جستجو سرعت خیلی بهتری رو داره توصیه میشه که از نوع عددی برای کدملی استفاده کنید.
با سلام میوانید درزمان نمایش از این روش استفاده کنید :
Code.ToString("D10")