سؤال

ولدي سؤال مبتدئين في T-SQL.

ونحن استيراد صفائح Excel إلى SQL Server 2008. لسيئة للغاية هذه ملفات اكسل لم تنسيق الطريقة التي ينبغي أن يكون. نريد رقم هاتف لتبدو مثل هذا: '012345678'، لا الرئيسي وراء المسافات ولا بيضاء من الداخل. والأسوأ من ذلك في بعض الأحيان يتم ترميز رقم مع بادئة '0123-2349823' أو '0123/2349823 ".

وعادة أود أن تصدير ملف Excel إلى CSV الملف، ثم إطلاق بعض السحر برل للقيام تنظيف ومن ثم إعادة استيراد ملف Excel.

ومع ذلك سيكون من المثير للاهتمام أن نعرف كيف نتعامل مع مثل هذه الاشياء مع T-SQL.

وأي أفكار؟

هل كانت مفيدة؟

المحلول

وشيء من هذا القبيل

replace(replace(rtrim(ltrim('0123-2349823')), '-', ''), '/', '')

ويجب أن تعمل. لا تبدو جميلة. ؛)

نصائح أخرى

وأود أن التوجه نحو ذلك مع تحديث واستخدام 'استبدال' وLTRIM / RTRIM وظائف لSQL.

Update Table1
set phonenum = Case
        When phonenum like '%-%' Then LTrim(RTrim(Replace(phonenum, '-', '')))
            Else LTrim(RTrim(Replace(phonenum, '/', '')))
        End

و"تنظيف" يحتوي على قيمة رقمية فقط

واعتمادا على ما إذا كان رقم الهاتف يحتوي على "-"، "/"، استبدالها سلسلة فارغة

create table #t ( tel varchar(30) )

insert  #t select '0123-2349823' 
insert  #t select '0123/2349823'

select  tel,
        replace(tel, 
            case
                when patindex('%-%', tel) > 0 then '-'
                when patindex('%/%', tel) > 0 then '/'
            end, '') as Cleaned
from    #t
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top