Announcement

Collapse
No announcement yet.

Teilsuche in string

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Teilsuche in string

    Hallo,
    ich habe folgendes Problem:

    create procedure Update_Manager
    (@BrickNoAlt nvarchar(150),
    @BrickNoNeu nvarchar(150),
    @ManagerNameNeu nvarchar(150))
    AS update xxx.dbo.Account
    set BrickNo = @BrickNoNeu,
    ManagerName = @ManagerNameNeu
    where BrickNo like @BrickNoAlt

    Diese Prozedur verändert nach eingabe des Benutzers die BrickNo und den Namen.
    Das Problem ist jetzt, dass der Benutzer die alte BrickNo in dem Format : KK10101 (also 2*Buchstabe+5*Zahl) eingibt. In der Datenbank stehen aber teilweise nur die Zahlen werte (das KK am Anfang bleibt immer gleich). Es müsste also nur nach den Zahlen gesucht werden, der Benutzer muss aber die normale BrickNo in der form MIT den Buchstaben eingeben können.

    Könnt ihr mir dabei helfen?

    MfG

  • #2
    Gibt der Benutzer denn immer die BrickNo mit den Buchstaben ein? Dann brauchst Du doch einfach nur ein SubString auf den Wert mit Buchstaben zu machen und den Wert dann in eine Zahl umwandel sofern das erforderlich ist.

    Comment


    • #3
      Also der Benutzer gibt in der Prozedur immer die nr. mit den Buchstaben ein, aber die Benutzer in der Applikation vergessen das ab und zu mal (manchmal machen sie es, manchmal nicht).
      Wie würde denn die Prozedur aussehen, wenn man beide fälle abfangen möchte?

      Comment


      • #4
        Wenn der Benutzer das eingeben MUSS, dann ist das nicht die Aufgabe der Datenbank das zu verifizieren. Das solltest Du eigentlich schon VOR dem Losschicken des Requests an die Datenbank monieren.
        Ansonsten hast Du natürlich die Möglichkeit so etwas zu machen:

        1. Wandle den String in uppercase
        2. Prüfe ob "KK" vorhanden und lösche wenn vorhanden
        3. Wandle den Text in eine Zahl

        Was Du zulassen möchtest und was nicht liegt da natürlich bei Dir. Alles würde ich schon eine clientseitige Validierung um Umwandlung vornehmen. Dann kannst Du der DB auch gleich eine Zahl mitgeben, sofern der Benutzer überhaupt valide Daten eingegeben hat.

        Comment


        • #5
          Beispiel:
          [HIGHLIGHT="SQL"]BEGIN TRANSACTION;

          CREATE TABLE #Nos ( BrickNo CHAR(7))
          INSERT INTO #Nos
          SELECT 'KK11111' AS BrickNo UNION ALL
          SELECT 'KK22222'


          DECLARE @BrickNo CHAR(7); SET @BrickNo = '11111'

          SELECT BrickNo
          FROM #Nos
          WHERE BrickNo = CASE WHEN ISNUMERIC (@BrickNo) = 1 THEN 'KK'+ @BrickNo ELSE @BrickNo END;

          ROLLBACK; [/HIGHLIGHT]

          Comment


          • #6
            @ ebis,
            könntest du mir das bitte ein bisschen erklären und vllt. mit der Stored Procedure kombiniere, ich blick da grade nicht so durch

            danke =)

            Comment


            • #7
              Where-Clause (Zeile 13) in deiner Sp ersetzen... (Rest ist nur Beispiel...)

              Comment


              • #8
                ich habs jetzt so gemacht, aber es funktioniert noch nicht (es werden nur die Zeilen geändert, bei denen auch kk vorne steht, aber nicht bei denen nur die Zahl steht!

                create procedure Update_Manager
                (@BrickNoAlt nvarchar(150),
                @BrickNoNeu nvarchar(150),
                @ManagerNameNeu nvarchar(150))
                AS update eap_germany_hcr.dbo.Account
                set BrickNo = @BrickNoNeu,
                ManagerName = @ManagerNameNeu
                where BrickNo = CASE WHEN ISNUMERIC (@BrickNoAlt) = 1 THEN
                'KK'+ @BrickNoNeu ELSE @BrickNoAlt END

                Comment


                • #9
                  Kann mir keiner weiterhelfen?!

                  Comment

                  Working...
                  X