Announcement

Collapse
No announcement yet.

Zufälliger String-Werte

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

  • Zufälliger String-Werte

    Hallo zusammen,

    ich versuche gerade verzweilfelt ein laufendes c#-programm mit einer (oder mehreren) stored procederes abzubilden (kundenvorgabe).
    ziel ist es einen n-stelligen string zu erzeugen, der aus zufälligen zeichen besteht, deren bereich festlegbar sein soll (also z.b. von 'A' bis 'M').
    habe schon diverse ansätze verfolgt. der vielversprechenste war per "rand" zahlen auszugeben und diese dann in deren ascii-wert umzuwandeln. ich weiß aber schon nicht, wie ich diesen bereich eingrenzen soll (ohne andauernde if-else's)
    hat jemand da eine idee - oder einen anderen lösungsansatz?

    --> nachtrag: falls niemand eine bessere idee hat, würde ich mit temporären tables arbeiten, in denen immer nur die jeweiligen werte drin stehen - allerdings liefe das dann ggf. auf 20 verschiedene tables raus ((

    grüße aus Mainhatten

    Markus
    Zuletzt editiert von markusffm; 22.03.2010, 16:04.

  • #2
    Hallo,

    ich bin nicht sicher ob ich das Problem auch richtig verstanden habe, aber einen String mit variabler Länge und Buchstaben von A bis M bekommt man z.B. so:
    [highlight=sql]DECLARE @str nvarchar(10)
    SET @str = ''

    WHILE len(@str) < 10
    SET @str = @str + nchar(round((77-65) * rand(), 0) + 65)

    PRINT @str[/highlight]
    lg chapster

    Comment


    • #3
      Hallo chapster ,

      ja hast Du! SUPER - vielen vielen dank - das erspart mir viel arbeit mit temporären tables.

      Grüße aus Mainhatten

      Markus

      Comment


      • #4
        Das ist echt eine tolle Prozedur!
        Ich habe ein wenig damit rumprobiert. Wie genau stelle ich denn den Wertebereich (also quasi die Buchstaben-Range) ein?

        Comment


        • #5
          Hallo,
          Originally posted by StefanBO View Post
          Wie genau stelle ich denn den Wertebereich (also quasi die Buchstaben-Range) ein?
          Indem du die Zahl 77 änderst. Am besten siehst du dir die ASCII-Tabelle an. In meinem Beispiel von 65 (also A) bis 77 (also M). Am besten einfach Variablen einsetzen und an die ASCII-Tabelle halten. So kannst du auch das Startzeichen festlegen. z.B:[highlight=sql]DECLARE @str nvarchar(10)
          DECLARE @startASCII_Range smallint
          DECLARE @endASCII_Range smallint

          SET @startASCII_Range = 71 --G
          SET @endASCII_Range = 73 --I

          SET @str = ''

          WHILE len(@str) < 10
          SET @str = @str + nchar(round((@endASCII_Range - @startASCII_Range) * rand(), 0) + @startASCII_Range)

          PRINT @str[/highlight]

          lg chapster

          Comment


          • #6
            cool, danke!

            Comment


            • #7
              Ich hatte mal einen Passwort-Generator in T-SQL erstellt, der nach dem gleichen Prinzip arbeitet.
              Da kannst Du die erlaubten Zeichen flexibel vorgeben, z.B. um auch DE-Umlaute mit zu verwenden o.ä.
              Olaf Helper

              <Blog> <Xing>
              * cogito ergo sum * errare humanum est * quote erat demonstrandum *
              Wenn ich denke, ist das ein Fehler und das beweise ich täglich

              Comment

              Working...
              X