Avatar billede azcii Nybegynder
24. november 2012 - 13:30 Der er 2 kommentarer og
1 løsning

Ændre data under udtræk

Jeg er bestemt ikke på hjemmebane her.

Jeg har en MSSQL tabel med 2 felter:
1. myText (eks: "engang for [YEAR]år siden")
2. myDate (eks: 23-11-1859 00:00:00)

Jeg ønsker at trække "myText" ud af tabellen, men jeg vil også gerne regne ud hvor mange år siden "myDate" er, og bruge udregniningen istedet for [YEAR] (hvis [YEAR] findes i teksten)

Så jeg for følgende resultat "engang for 153år siden"

Idag trækker jeg udregning ud sammen med teksten, men jeg ønsker som sagt kun teksten hvor udregningen indgår istedet for [YEAR].


SELECT [myText], (year(getdate()) - DATEPART(yyyy, myDate)) AS [year] FROM .....


Så spørgsmålet går på, kan jeg lave en replace i [myText] med indholdet fra [year] (udregningen)?
Avatar billede azcii Nybegynder
24. november 2012 - 13:44 #1
Jeg er kommen lidt videre

SELECT REPLACE ([myText], '[YEAR]',(year(getdate()) - DATEPART(yyyy, myDate))) AS [myText] FROM ...


Men dette giver mig ikke resultatet hvis "myDate" er NULL og [year] ikke findes i myText
Avatar billede azcii Nybegynder
24. november 2012 - 14:06 #2
Så lykkedes det endelig:

SELECT (CASE WHEN [myDate] IS NULL THEN [myText] ELSE REPLACE ([myText], '[YEAR]',(year(getdate()) - DATEPART(yyyy, myDate))) END) AS [myText] FROM
Avatar billede arne_v Ekspert
24. november 2012 - 19:34 #3
Hvis du ellers koder i .NET, saa kunne det maaske laves paenere i en CLR funktion.
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