Avatar billede Syska Mester
04. januar 2007 - 23:01 Der er 12 kommentarer og
1 løsning

fjern en del af en post ud fra et pattern

Hej,

jeg vil gerne vide om det er muligt at fjerne en del af en "Text" type column hvis et bestemt ord findes.

eks.
Hej, jeg er supermand, og alt efter[Tag] skal fjernes

I overstående vil jeg så gerne have fjernet fra og med [Tag] og frem.

kan det lade sig gøre ?

Hvis, hvordan? Synes ikke rigtig jeg kan finde noget ...

// ouT
Avatar billede arne_v Ekspert
04. januar 2007 - 23:10 #1
kan CHARINDEX og SUBSTRING ikke ordne det ?
Avatar billede Syska Mester
04. januar 2007 - 23:33 #2
bahhhh, havde kigget på patindex .... virkede ik' ... men det gør charindex :-)

smid et svar

// ouT
Avatar billede Syska Mester
04. januar 2007 - 23:34 #3
og hvis nu "[Tag]" ikke findes .. hvad kan jeg så gøre ? Da den jo så vil returene 0 og slette hele min sting ...

// ouT
Avatar billede Syska Mester
04. januar 2007 - 23:45 #4
Det her ser ud til at virke ..... :-)

Tager nok lige lidt tid, 800k rows den skal igennem .... :-)
UPDATE ForumPosts SET [Text] = (SELECT substring(Text, 0, charindex('[tag]',[Text])) FROM ForumPosts AS FP WHERE ForumPosts.PostID = FP.PostID)
WHERE charindex('[tag]', Text) > 0

Bare smid svar
Avatar billede arne_v Ekspert
05. januar 2007 - 01:49 #5
du må kunne nøjes med:

UPDATE ForumPosts SET [Text] = substring([Text], 0, charindex('[tag]',[Text])
WHERE charindex('[tag]', [Text]) > 0
Avatar billede arne_v Ekspert
05. januar 2007 - 01:50 #6
og svar
Avatar billede arne_v Ekspert
05. januar 2007 - 01:50 #7
PS: bruger du SQLServer 2005 ?
Avatar billede Syska Mester
05. januar 2007 - 13:55 #8
jep, bruger sql 2005 ...

ja, nu du siger det ... ved ikke hvorfor jeg tænkte i andre baner .... takker for det
Avatar billede arne_v Ekspert
05. januar 2007 - 15:22 #9
du ved godt at du i 2005 kan skrive dine egne functions i C# ?
Avatar billede Syska Mester
06. januar 2007 - 00:16 #10
Ja ... ved det ... og det var så det jeg vidste om det ... hvis du eventuelt har noget læse stof lige ved ærmet omkring det ville det være helt perfekt ... men da jeg ikke skal mere end lige den ene SQL, er det vist lidt spild af tid ... men måske der kunne laves andre smarte ting ....

Er nemlig ved at flyttet et rimelig stort site over i ASP.NET, så hvis man kunne lave en process af data allerede på SQL via C# kunne der måske spares tid og kræfter på serveren ... som så bliver sendt tilbage som en klasse kunne det jo være smart ...

// ouT
Avatar billede arne_v Ekspert
06. januar 2007 - 04:11 #11
jeg poster lige et simpelt eksempel
Avatar billede arne_v Ekspert
06. januar 2007 - 04:11 #12
CREATE ASSEMBLY MyUDF FROM 'C:\E\MyUDF.dll' WITH PERMISSION_SET = SAFE
GO
CREATE FUNCTION MD5(@val NVARCHAR(1000))
RETURNS NVARCHAR(50)
AS
EXTERNAL NAME MyUDF.[E.Hash].MD5Calc
GO
Avatar billede arne_v Ekspert
06. januar 2007 - 04:11 #13
using System;
using System.Data.Sql;
using System.Data.SqlTypes;
using System.Data.SqlClient;
using System.Text;
using System.Security.Cryptography;

using Microsoft.SqlServer.Server;

namespace E
{
    public class Hash
    {
        private static readonly Encoding utf8 = new UTF8Encoding();
        private static readonly MD5 md5 = new MD5CryptoServiceProvider();
        [SqlFunction]
        public static SqlString MD5Calc(string s)
        {
            byte[] binres = md5.ComputeHash(utf8.GetBytes(s));
            StringBuilder res = new StringBuilder("");
            for(int i = 0; i < binres.Length; i++)
            {
                res.Append(String.Format("{0:x2}", binres[i]));
            }
            return res.ToString();
        }
    }
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester