sql replace

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
veski
Üye
Mesajlar: 37
Kayıt: 17 Nis 2006 05:02
Konum: denizli

sql replace

Mesaj gönderen veski »

sql tablosunda 1 alanda değerlerim var. Bu değerler önce harf sonra rakamlardan oluşmaktadır. a1256, ab235, bc4569 gibi
sql komutu ile verilerinbaşındaki harfleri nasıl temizleyebilirim. Harflerin kaç adet olduğu belli değil yani standart değil.
Kullanıcı avatarı
m_ekici
Kıdemli Üye
Mesajlar: 563
Kayıt: 11 Haz 2003 06:49
Konum: Adana
İletişim:

Re: sql replace

Mesaj gönderen m_ekici »

s.a. biraz dedem usulü oldu ama çalışıyor. :lol:
tablo ismini ve kolon adını düzelt sol taraftaki sayı olmayan karakterleri siliyor... (Mutlaka yedek al sonra çalıştır)

Tablo Adı : ATEST
Tablodaki Kolon : AAA

Kod: Tümünü seç

DECLARE @AAA VARCHAR(30)
DECLARE @Ara Int
DECLARE CRS_ATEST CURSOR FOR SELECT AAA FROM ATEST 
OPEN CRS_ATEST
FETCH NEXT FROM CRS_ATEST INTO @AAA

WHILE @@FETCH_STATUS =0
	BEGIN
         Set @Ara=33
    WHILE @Ara NOT IN (48,49,50,51,52,53,54,55,56,57)
     BEGIN
     Set @Ara = ASCII(LEFT(@AAA,1))
     if ASCII(LEFT(@AAA,1)) NOT IN (48,49,50,51,52,53,54,55,56,57)
        BEGIN
        SET @AAA=SUBSTRING(@AAA,2,DATALENGTH(@AAA))
        END     
     UPDATE ATEST SET AAA = @AAA 
              WHERE CURRENT OF CRS_ATEST 
     END       
	FETCH NEXT FROM CRS_ATEST INTO @AAA 
	END
CLOSE CRS_ATEST
DEALLOCATE CRS_ATEST
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Re: sql replace

Mesaj gönderen Hakan Can »

Şuna benzer bir query de kullanabilirsin:

Kod: Tümünü seç

UPDATE TABLO
  SET ALAN = CASE WHEN ISNUMERIC(ALAN) = 1 THEN ALAN
                  WHEN ISNUMERIC(SUBSTRING(ALAN, 2, 10)) = 1 THEN SUBSTRING(ALAN, 2, 10)
                  WHEN ISNUMERIC(SUBSTRING(ALAN, 3, 10)) = 1 THEN SUBSTRING(ALAN, 3, 10)
                  WHEN ISNUMERIC(SUBSTRING(ALAN, 4, 10)) = 1 THEN SUBSTRING(ALAN, 4, 10)
                  WHEN ISNUMERIC(SUBSTRING(ALAN, 5, 10)) = 1 THEN SUBSTRING(ALAN, 5, 10)
                  WHEN ISNUMERIC(SUBSTRING(ALAN, 6, 10)) = 1 THEN SUBSTRING(ALAN, 6, 10)
                  WHEN ISNUMERIC(SUBSTRING(ALAN, 7, 10)) = 1 THEN SUBSTRING(ALAN, 7, 10)
                  WHEN ISNUMERIC(SUBSTRING(ALAN, 8, 10)) = 1 THEN SUBSTRING(ALAN, 8, 10)
                  WHEN ISNUMERIC(SUBSTRING(ALAN, 9, 10)) = 1 THEN SUBSTRING(ALAN, 9, 10) ELSE ALAN END
Cevapla