Results 1 to 12 of 12

Thread: SQL Bedrijfsnaam indien leeg klantnaam

  1. #1
    Carpe Diem Leander's Avatar
    Join Date
    Feb 2005
    Location
    Noord Brabant
    Posts
    125

    SQL Bedrijfsnaam indien leeg klantnaam

    Hallo dan zijn we weer na een lange tijd

    Ben wat aan het stoeien met een Sybase sql maar kom er ff niet uit.

    Heb de sql wat ingekort omdat het alleen om de naam gaat, de bedoeling is dat ik een bedrijfsnaam of een klantnaam wil zien

    Code:
      select
        IF (DEBITEUR_BEDRIJF is NOT NULL) then DEBITEUR_BEDRIJF
          ELSE
            IF (DEBITEUR_TUSSEVOEGSEL is NULL) then
              DEBITEUR_VOORNAAM + ' ' + DEBITEUR_ACHTERNAAM
            ELSE
              DEBITEUR_VOORNAAM + ' ' + Trim(DEBITEUR_TUSSEVOEGSEL) + ' ' + DEBITEUR_ACHTERNAAM
            ENDIF
        ENDIF as NaamKlant
    
    from debiteur

    Ik doe hier kennelijk toch iets fout
    Last edited by Leander; 31-Jan-21 at 03:20. Reason: spelvaut
    Met vriendelijke groet, With kind regards, Mit freundlichen grüßen,
    Leander

  2. #2
    Fornicatorus Formicidae VideoRipper's Avatar
    Join Date
    Mar 2005
    Location
    Vicus Saltus Orientalem
    Posts
    5,708
    Dit is MS T-SQL, maar zou volgens mij ook moeten werken op Sybase:
    SQL Code:
    1. SELECT
    2.   ISNULL(DEBITEUR_BEDRIJF,
    3.          ISNULL(DEBITEUR_VOORNAAM, '') +
    4.          ISNULL(' ' + DEBITEUR_TUSSENVOEGSEL, '') +
    5.          ISNULL(' ' + DEBITEUR_ACHTERNAAM, '')) AS NaamKlant
    TMemoryLeak.Create(Nil);

  3. #3
    Carpe Diem Leander's Avatar
    Join Date
    Feb 2005
    Location
    Noord Brabant
    Posts
    125
    Heey Peter,


    sql werkt maar krijg geen naam klant als het veld bedrijf leeg is
    Last edited by Leander; 31-Jan-21 at 18:54.
    Met vriendelijke groet, With kind regards, Mit freundlichen grüßen,
    Leander

  4. #4
    Fornicatorus Formicidae VideoRipper's Avatar
    Join Date
    Mar 2005
    Location
    Vicus Saltus Orientalem
    Posts
    5,708
    Je zou om elk veld nog kunnen zetten:
    SQL Code:
    1. NULLIF(DEBITEUR_XXXX, '')
    Wanneer een veld dan een lege string bevat, dan maakt hij er NULL van.
    TMemoryLeak.Create(Nil);

  5. #5
    Fornicatorus Formicidae VideoRipper's Avatar
    Join Date
    Mar 2005
    Location
    Vicus Saltus Orientalem
    Posts
    5,708
    Zo dus:
    SQL Code:
    1. SELECT
    2.   ISNULL(NULLIF(DEBITEUR_BEDRIJF, ''),
    3.          ISNULL(NULLIF(DEBITEUR_VOORNAAM, '') +
    4.          ISNULL(' ' + NULLIF(DEBITEUR_TUSSENVOEGSEL, ''), '') +
    5.          ISNULL(' ' + NULLIF(DEBITEUR_ACHTERNAAM, ''), '')) AS NaamKlant
    TMemoryLeak.Create(Nil);

  6. #6
    Carpe Diem Leander's Avatar
    Join Date
    Feb 2005
    Location
    Noord Brabant
    Posts
    125
    Ik krijg dan de melding: wrong number of parameters to function (ISNULL)
    Met vriendelijke groet, With kind regards, Mit freundlichen grüßen,
    Leander

  7. #7
    Quote Originally Posted by VideoRipper View Post
    Zo dus:
    SQL Code:
    1. ISNULL(' ' + NULLIF(DEBITEUR_TUSSENVOEGSEL, ''), '') +
    Dit gaat toch helemaal mis? Je kunt geen ' ' + NULL doen want dan is de uitkomst altijd NULL.

    Je hebt wel gelijk bij die andere 2 zodat een lege string ook als null gezien wordt.

    dus
    SQL Code:
    1. SELECT
    2.   ISNULL(NULLIF(DEBITEUR_BEDRIJF, ''),
    3.          ISNULL(DEBITEUR_VOORNAAM, '') +
    4.          TRIM(' ' + ISNULL(DEBITEUR_TUSSENVOEGSEL, '')) +
    5.          TRIM(' ' + ISNULL(DEBITEUR_ACHTERNAAM, '')) AS NaamKlant
    Last edited by rvk; 01-Feb-21 at 17:31.

  8. #8
    Lees net dat sybase wat apart om gaat met lege string afhankelijk van de field definitie (NOT NULL). Het kan dus zo zijn dat een lege string een spatie bevat. Schijnt dat een rtrim op het field alsnog null terug kan geven https://stackoverflow.com/questions/...tring/52286660

    Geen idee of je hier iets aan hebt.

  9. #9
    Fornicatorus Formicidae VideoRipper's Avatar
    Join Date
    Mar 2005
    Location
    Vicus Saltus Orientalem
    Posts
    5,708
    Quote Originally Posted by rvk View Post
    Dit gaat toch helemaal mis?
    Dat krijg je ervan als je ongetest dingen op een forum neerplarkt...
    TMemoryLeak.Create(Nil);

  10. #10
    Carpe Diem Leander's Avatar
    Join Date
    Feb 2005
    Location
    Noord Brabant
    Posts
    125
    Dat is de juiste, bedankt voor je reactie RVK al moet er nog een ) achter om het af te sluiten

    Code:
    SELECT 
      ISNULL(NULLIF(DEBITEUR_BEDRIJF, ''), 
             ISNULL(DEBITEUR_VOORNAAM, '') +
             TRIM(' ' + ISNULL(DEBITEUR_TUSSENVOEGSEL, '')) + 
             TRIM(' ' + ISNULL(DEBITEUR_ACHTERNAAM, '')) )  AS NaamKlant
    Goede tip Miep
    Code:
    Lees net dat sybase wat apart om gaat met lege string afhankelijk van de field definitie (NOT NULL). Het kan dus zo zijn dat een lege string een spatie bevat. Schijnt dat een rtrim op het field alsnog null terug kan geven
    Je zat toch aardig in de goede richting, bedankt voor je inzet Peter
    Quote Originally Posted by VideoRipper View Post
    Dat krijg je ervan als je ongetest dingen op een forum neerplarkt...

    Heb ik toch nog wat te doen in de Corona tijd om de oude source wat aan te passen.
    Met vriendelijke groet, With kind regards, Mit freundlichen grüßen,
    Leander

  11. #11
    Ik zie alleen dat je met die trim nog een beetje moet knutselen.
    Op deze manier valt die eerste ' ' er natuurlijk altijd af.
    (Ik heb hem ook niet uitgetest en uit de losse vuist getikt )

  12. #12
    Carpe Diem Leander's Avatar
    Join Date
    Feb 2005
    Location
    Noord Brabant
    Posts
    125
    Klopt Rik en heb het veranderd naar rtrim en dat werkt.

    Code:
    SELECT 
      ISNULL(NULLIF(rTRIM(DEBITEUR_BEDRIJF), ''), 
             ISNULL(DEBITEUR_VOORNAAM, '') +
             rTRIM(' ' + ISNULL(DEBITEUR_TUSSENVOEGSEL, '')) + 
             rTRIM(' ' + ISNULL(DEBITEUR_ACHTERNAAM, '')) )  AS NaamKlant
    Met vriendelijke groet, With kind regards, Mit freundlichen grüßen,
    Leander

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •