نمایش نتایج 1 تا 8 از 8

نام تاپیک: Digit Grouping- گروه بندی اعداد

  1. #1

    Digit Grouping- گروه بندی اعداد

    آیا کسی تابعی برای SQl دارد که یک عدد را از ورودی گرفته و آن عدد را سه رقم ، سه رقم جدا کرده و به خروجی بفرستد .

    بطور مثال در ستون Amount اعداد ذخیره شده اند ، پس از بکار بردن تابع مورد نیاز خروجی بصورت زیر بدهد :

    Select GroupDigit(Amount) From tblTest

    Result------------------------------------
    123,000
    1,234,654
    ....
    ...
    .

    پیشاپیش از کمک شما متشکرم

    .

  2. #2
    کاربر دائمی آواتار vadood
    تاریخ عضویت
    فروردین 1382
    محل زندگی
    تهران
    پست
    858
    چرا می خواهید عدد را فرمت شده از دیتابیس بگیرید؟ بهتر نیست هنگام نماش mask اعمال کنید؟

  3. #3
    چون خروجی اش را در محیط ها مختلف می خواهم نشان دهم . و لذا می خواهم از مبدا این اتفاق بیفتد .

  4. #4
    یعنی نوشتن این تابع اینقدر سخته؟!

  5. #5
    یعنی نوشتن این تابع اینقدر سخته؟!
    گمان نمی کنم. ولی بعضی وقتها یه اتفاق هایی میافته که آدم از شوق جواب دادن میافته (البته هیچ مشکلی با این تاپیک ندارم دلم از جای دیگه ای پر بود) ولی این حرف شما خیلی به آدم انگیزه می ده. اینم 2 تا جواب:


    declare @n int
    set @n=1878798
    declare @r varchar(30)
    set @r=''
    while(@n!=0)
    begin
    set @r = cast((@n % 1000) as varchar(3)) + '''' + @r
    set @n = @n / 1000
    end
    print @r

    declare @n int
    set @n=1878798
    declare @r varchar(30)
    set @r=cast(@n as varchar(30))
    declare @l int
    set @l=len(@r)-2
    while(@l>0)
    begin
    set @r = stuff (@r,@l,0,'''')
    set @l=@l-3
    end
    print @r
    هر که بر مرکب باطل نشیند ، در سراى پیشمانى فرودش مى‏آورند

  6. #6
    از پاسخ شما متشکرم

  7. #7

    نقل قول: Digit Grouping- گروه بندی اعداد

    این روش رو امتحان کن.


    declare @s nvarchar(2000),
    @a nvarchar(2000),
    @i int;
    set @s=
    '13984649846513215647987987'+
    '651316549897464532156498798'+
    '46543219874554654897856432'
    set @i=len(@s);
    set @a=reverse(@s)
    set @i=0;
    set @s='';
    while((@i*3+1)<=len(@a))
    begin
    set @s=@s+substring(@a,3*@i+1,3)+',';
    set @i=@i+1
    end
    set @a=reverse(@s)
    select substring(@a,2,len(@a))




    1,398,464,984,651,321,564,798,798,765,131,654,989, 746,453,215,649,879,846,543,219,874,554,654,897,85 6,432
    وبلاگ من (Advanced SQL Querying)

  8. #8

    نقل قول: Digit Grouping- گروه بندی اعداد

    اینم یک روش دیگر.
    شاید به نظر یکمی پیچیده باشد ولی باید سرعت اجرای بالایی داشته باشد.

    DECLARE @a NVARCHAR(4000)
    SET @a=reverse('4124124123413256456567569670967453347455356375634 6356857'
    +'4646456436346346346456464646464564646464564643643 64645645436'+
    '4563464564564563466456456456434563534686845554868 34584563464');

    WITH Navigation AS (
    SELECT
    cast('' as nvarchar(4000)) AS [value]
    ,0 AS [Level]

    UNION ALL SELECT
    n.[value]+','+substring(@a,3*[level]+1,3) AS [value]
    , n.[level] + 1 AS [level]
    FROM
    Navigation n
    WHERE
    [level] < len(@a)/3.0
    )

    SELECT TOP 1 substring(reverse([value]),1,len([value])-1)
    FROM Navigation
    ORDER BY [Level] DESC





    41,241,241,234,132,564,565,675,696,709,674,533,474 ,553,563,756,346,356,857,464,645,643,634,634,634,6 45,646,464,646,456,464,646,456,464,364,364,645,645 ,436,456,346,456,456,456,346,645,645,645,643,456,3 53,468,684,555,486,834,584,563,464
    آخرین ویرایش به وسیله محمد سلیم آبادی : سه شنبه 20 مرداد 1388 در 17:45 عصر
    وبلاگ من (Advanced SQL Querying)

تاپیک های مشابه

  1. مشکل pulse digit detection در کامپوننت kdtell
    نوشته شده توسط yaghoub در بخش برنامه نویسی در 6 VB
    پاسخ: 1
    آخرین پست: جمعه 16 اردیبهشت 1384, 21:01 عصر
  2. مشکل در KdTele در Digit Detection
    نوشته شده توسط Touska در بخش برنامه نویسی در Delphi
    پاسخ: 4
    آخرین پست: سه شنبه 23 فروردین 1384, 02:16 صبح
  3. درست کردن ردیف برای Grouping
    نوشته شده توسط In_Chan_Nafar در بخش گزارش سازی با Crystal Report
    پاسخ: 2
    آخرین پست: پنج شنبه 18 فروردین 1384, 14:02 عصر
  4. Aggregate Text Function For Grouping
    نوشته شده توسط infidel در بخش SQL Server
    پاسخ: 5
    آخرین پست: چهارشنبه 17 فروردین 1384, 00:02 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •