Avatar billede pigbear Nybegynder
10. december 2008 - 12:37 Der er 9 kommentarer

Funktioner i MS SQL server management studio express

Hej med jer,

Kan nogen sige mig hvilke indbyggede funktioner er i ms sql ?

Jeg har brug for at kopiere de første antal tegn ud fra noget data i en kolonne. Dette skal gøres i et view, men jeg får det ikke til at fungere.

Noget i denne retning: Copy(minstreng,startpos,slutpos)

Jeg skal envidere kontrollere om data´ene opfylder visse kriterier
fx hvis de to første tegn er '00', så skal jeg kopiere 4 tegn ind, ellers skal værdien sættes til fx en stjerne.

Kan det laves ved hjælp af indbyggede funktioner eller ?

mvh
pigbear
Avatar billede fennec Nybegynder
10. december 2008 - 13:03 #1
Tryk F1 i din SQL Manager og søg efter "string functions". Så skulle du gerne få en liste af funktioner du kan bruge.

Men de funktioner du er ude efter lyder som:
IIf(Logical_Expression, {Expression1, Expression2})
SUBSTRING ( expression ,start , length )
LEFT ( character_expression , integer_expression )

Det bliver til noget ala:
select iif(left(DinKolonne,2)='00', SUBSTRING(DinKolonne, 1, 4), '*') as resultat from din tabel
Avatar billede fennec Nybegynder
10. december 2008 - 13:06 #2
... Jeg brugte SUBSTRING i stedet for left, da jeg gik ud fra du nok ville starte fra en anden position end første, siden det var den du brugte som eksempel.

Er det bare de første 4 tegn du skal have ud, kan du lige så godt bruge Left funktonen.
Avatar billede aaberg Nybegynder
10. december 2008 - 13:06 #3
Det er altid en god ide at se på dokumentationen. Her er en liste over  SQL Server funktioner på msdn
http://msdn.microsoft.com/en-us/library/aa258899(SQL.80).aspx

Se under "String Functions" for den type funktioner du skal bruge.
Avatar billede arne_v Ekspert
11. december 2008 - 02:21 #4
Dokumentationen kan oven i købet downloades og installeres lokalt.
Avatar billede arne_v Ekspert
11. december 2008 - 02:22 #5
Jeg mener ikke at SQLServer har IIF så der skal nok bruges CASE WHEN.
Avatar billede fennec Nybegynder
11. december 2008 - 08:36 #6
Arne_v >>
Det er da også rigtig.

Det bliver noget i denne stil i stedet:
select (case when left(DinKolonne,2)='00' then SUBSTRING(DinKolonne, 1, 4) else '*' end) as resultat from din tabel
Avatar billede pigbear Nybegynder
11. december 2008 - 11:43 #7
Tak for hjælpen,
Smid et svar (kan man give point til to ?)

mvh

pigbear
Avatar billede fennec Nybegynder
11. december 2008 - 11:56 #8
Du kan godt give point til 2 personer eller flere. Bare vælg begge navne i boksen til venstre (når alle har lavet et svar), så bliver point delt lige mellem de valgte. Du kan også vælge den advanceret metode og selv tildele point til de enkelte, hvis en skal have flere end de andre.

.o) <-- One Eyed Jack
Avatar billede ssv Nybegynder
11. december 2008 - 13:40 #9
Jeg godt det ikke er passende at 'reklamere' i andre tråde, men der skulle vel ikke være nogen af jer der kender til den fejlmeddelelse, jeg beskriver her: http://www.eksperten.dk/spm/855868 - i virker til at have styr på det, og jeg har virkelig brug for hjælp her :-)
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