جشنواره پاییزه توسینسو ، تا 90% تخفیف + گارانتی، مدرک و منتورینگ
پایان تخفیف تا:
مشاهده دوره‌ها
0

تفاوت تابع checksum با checksum agg

با سلام و خسته نباشید خدمت شما ، من یک سئوال داشتم و آن این هست که تفاوت بین checksum با checksumagg در چیست ، البته می دونم که تابع checksum مثل md5 کار می کنه فقط عدد بر می گردونه اونهم برای رشته ها یعنی می شه در select استفاده کرد و کل اطلاعاتمونو یک جا checksum کنیم حالا تفاوتشو با checksumagg نمی دونم.

با تشکر از شما که راهنمایی می کنید

پرسیده شده در 1394/11/04 توسط

7 پاسخ

0

ممنونم از پاسختون آقای مهندس HamidJFard

اما خودم دارم جستجو می کنم کاملا متوجه بشوم و مثالها رو چک می کنم از راهنماییتون ممنونم

پاسخ در 1394/11/04 توسط
2

در بعضی مواقع شما نیاز دارید گروهی از داده ها را به مقدار checkup تبدیل کنید. به عنوان مثال می توانید تغییرات در جداول را متوجه شوید

پاسخ در 1394/11/04 توسط
2

با سلام ، من بررسی کردم و توضیحات checksum و checksum__agg را در زیر می نویسم با توضیحات خودم ، تابع checksum یا checksum_agg مثل hash و یکطرفه عمل می کند و در دستور select کاربرد دارد مثلا شما 100 رکورد دارید و می خواهید هر فیلد که در رکوردهای متوالی قرار دارد را هش کنید با این دو تابع می شود. برای مثال شما می خواهید هر فیلد که یک مقدار دارد حتی null باشد یک عدد خاصی بگیرد یعنی مثلا هر کلمه یک عدد دارد و ما می توانیم مثلا hassan را هش آن را بدست بیاوریم خوب یک عدد شاید چند رقمی بشود یا حتی عدد منفی بگیرد بنابراین کسی نمی تواند تشخیص دهد اما اگر یک حرف وارد کنید شاید کسی بتواند تشخیص دهد و تو ذهنش باشد اما برای کاراکترها یا جملات کسی اصلا نمی تواند تشخیص بدهد چون هش عددی هست. حتی checksum را بر روی چند فیلد می توان هش آن را بدست آورد یا برای تمام فیلدها چه عددی چه کاراکتری اما نمی شود checksum را فقط برای فیلدهای عددی بکار برد باید حتما یک فیلد از نوع مثلا varchar ی هم باشد اگر برای فیلدهای فقط عددی بکار ببرید همان مقدار فیلد را می گیرد.کوئری زیر یک فیلد دارد که به نام varchar هست این فیلد در یک جدول قرار دارد و جدول هم 100 رکورد دارد با تابع زیر می توان فیلد account را که مقدار دارد را هش عددی آن را بدست آورد

Code
SELECT  CHECKSUM(ACCOUNT) AS ACCOUNT_1  FROM TABLE_1

کوئری زیر هم مثل بالا هست و تفاوتی که دارد دو فیلد را همزمان هش می کند یعنی هم فیلد account و هم فیلد email را هش می کند یعنی با هم hash می کند

Code
SELECT  CHECKSUM(ACCOUNT,EMAIL) AS ACCOUNT_1  FROM TABLE_1

کوئری زیر chechsum__agg با checksum با هم در یک select آمده است ، کوئری زیر با group by هم کاربرد دارد یعنی مثلا یک گروه را با هم hash عددی آن را بدست می آورد مثلا در جدول زیر که table_1 هست 4 رکورد داریم در فیلد id 2 رکورد با نوع عددی 1 داریم چون فیلد عددی هست و 2 رکورد با نوع عددی 2 داریم حالا فیلد account هم 2 مقدار دارد که مثلا گروه 1 hassan و alireza هستند و گروه 2 abbas و amir هستند کوئری زیر در گروه 1 hassan و alireza را با هم hash عددی آن را بدست می آورد و گروه 2 را هم به همین صورت شما می توانید مثلا 50 گروه هم داشته باشید که هش هر کدام از گروه ها را بدست بیاورید

Code
SELECT  CHECKSUM_AGG(CHECKSUM(ACCOUNT)) AS ACCOUNT_1  FROM TABLE_1 GROUP BY ID

کوئری زیر مثل بالا هست اما یک تفاوت دارد که در گروه ها فیلد email را هم با account هش عددی آن را بدست می آورد اما کوئری بالا فقط hash فیلد account را بدست می آورد

Code
SELECT  CHECKSUM_AGG(CHECKSUM(ACCOUNT,EMAIL)) AS ACCOUNT_1  FROM TABLE_1 GROUP BY ID

با تشکر

پاسخ در 1394/11/04 توسط
0

با سلام و خسته نباشید جناب آقای مهندس HamidJFard

نه حرف شما کاملا درست اما من نمی دونم که checksumagg که در select هم بکار می رود چه کاربردی دارد مفهوم checksum را می دونم و کاربرد آن را اما checksumagg را نمی دانم که چه کاربردی دارد.

با تشکر از شما

پاسخ در 1394/11/04 توسط
2

با سلام و خسته نباشید خدمت آقای مهندس HamidJFard

من منظورم در نوشته بالا این بود که باید فیلد رشته ای با فیلد عددی در checksum بگذاریم تا جواب دهد البته به صورت تنها می شود فیلد رشته ای گذاشت اما به صورت تنها نمی شود فیلد عددی گذاشت اگر فیلد عددی در تابع checksum بگذاریم خود مقدار فیلد را بر می گرداند اگر من اشتباه می کنم محبت می کنید یک کد بگذارید .

در مورد اعداد منفی من چند مورد تست کردم عدد را داد اما اولش کاراکتر منفی بود در همه موارد به این صورت نبود عدد مثبت هم می داد

با تشکر از شما

پاسخ در 1394/11/05 توسط
1

از اسمش معلومه مقدار Checksum را برای دسته ای از داده ها باز می گرداند

پاسخ در 1394/11/04 توسط
1

اﻟﺒﺘﻪ ﻋﺪﺩ ﻣﻨﻔﻲ ﺑﺎﺯﻧﻤﻴﮕﺮﺩاﻧﺪ و اﻳﻨﻜﻪ ﺷﻤﺎ ﻣﻲ ﺗﻮاﻧﻴﺪ ﻓﻘﻄ ﻧﻮﻉ ﺩاﺩﻩ اي ﻋﺪﺩﻱ ﻫﻢ ﺩاﺷﺘﻪ ﺑﺎﺷﻴﺪ ﺑﻪ ﺩﻟﻴﻞ ﻋﻤﻠﻜﺮﺩ checksum

پاسخ در 1394/11/05 توسط

پاسخ شما