Jump to content
php.lv forumi

random 5 simboli


NBS

Recommended Posts

Sveiki, vēlējos uzzināt kā, lai uztaisa šādu lietu.

Man ir mainīgais:

DECLARE @this varchar(30);

SET @this = 'qwertyuiopasdfghjklzxcvbnm1234567890';

 

Vēlos izvadīt visas iespējamos variantus ar 5 simboliem.

Vai tas vispār ir iespējams ?

Link to comment
Share on other sites

Oraclē to var izdarīt ntajos veidos. Bet spriežot pēc sintakses, tas visdrīzāk ir MySQL, kaut gan autors, protams, tādus sīkumus neuzskata par vajadzīgu norādīt ;)

 

Viens piemērs varētu būt šāds:

 

mysql> desc v;
+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| n     | varchar(1) | YES  |     | NULL    |       |
+-------+------------+------+-----+---------+-------+
1 row in set (0.01 sec)

mysql> select * from v;
+------+
| n    |
+------+
| q    |
| w    |
| e    |
| r    |
| t    |
| y    |
+------+
6 rows in set (0.00 sec)

mysql> select distinct (concat(v1.n, v2.n, v3.n, v4.n, v5.n))
   -> from v v1
   -> cross join
   -> v v2
   -> cross join
   -> v v3
   -> cross join
   -> v v4
   -> cross join
   -> v v5
   -> limit 20;
+----------------------------------------+
| (concat(v1.n, v2.n, v3.n, v4.n, v5.n)) |
+----------------------------------------+
| qqqqq                                  |
| wqqqq                                  |
| eqqqq                                  |
| rqqqq                                  |
| tqqqq                                  |
| yqqqq                                  |
| qwqqq                                  |
| wwqqq                                  |
| ewqqq                                  |
| rwqqq                                  |
| twqqq                                  |
| ywqqq                                  |
| qeqqq                                  |
| weqqq                                  |
| eeqqq                                  |
| reqqq                                  |
| teqqq                                  |
| yeqqq                                  |
| qrqqq                                  |
| wrqqq                                  |
+----------------------------------------+
20 rows in set (0.00 sec)

 

Tiesa gan tam norādītajam simbolu skaitam variantu skaits ir diezgan iespaidīgs ;) un jautājums ir - ko tad īsti vajag un kādam mērķim kaut ko tādu vispār gribās dabūt?

 

Gints Plivna

http://datubazes.wordpress.com

Link to comment
Share on other sites

Un to visu Tu gribi ar DB (MySQL???) līdzekļiem?

Varam to this uzskatīt par skaitīšanas sistēmas ciparu uzskaitījumu.

Tavā gadījumā jāizvada visi 5 ciparu (un mazāki) skaitļi 35cinieku sistēmā.

tādu būs 35^5.

pseidokods:

for x = 0 to 35^5

echo convert_base_to_35(x,using_as_digits(@this)

Link to comment
Share on other sites

Gints Plivna diezgan labs piemērs, bet piedošanu, ka sākumā neminēju, ka man vajag to MS SQL.

Orākls šajā gadījumā nederēs.

 

ŠIS piemērs ar minimālām modifikācijām strādā arī uz MS SQL.

Tiesa gan ierakstu skaita nevājais apjoms apjoms un jautājums kāpēc tas vajag vēl joprojām paliek spēkā.

SQL Serverī BTW var izmanto common table expression un tur tas tehniski vispār ir bērnu spēle :)

 

with v as (
 select 'q' as n
 union all
 select 'w'
 union all
 select 'e'
 union all
 select 'r'
 union all
 select 't'
 union all
 select 'y')
select distinct (v1.n + v2.n + v3.n + v4.n + v5.n)
from v v1
cross join
v v2
cross join
v v3
cross join
v v4
cross join
v v5;


-----
wwweq


wrtwy

(7776 row(s) affected)

 

Es gan nemēģināšu nokaut kompi uz visiem piedāvātajiem simboliem. BTW varētu būt visādas problēmas ar temp space, atmiņas apjomu utt.

 

Gints Plivna

http://datubazes.wordpress.com

 

P.S. JO TĒMĀ rakstīts RANDOM 5 simboli, bet tekstā prasa visus???

Random nav tas pats kas visi, ne pēc funkcionalitātes, ne pēc ieguldāmā proča/atmiņas resursu apjoma.

Edited by Gints Plivna
Link to comment
Share on other sites

Kaut kā man nesanāk.

Meiģinu šādi:

with v as ( 
 select 'a' as n 
 union all 
 select 'b'
 union all 
 select 'c'
 )
select distinct (v1.n + v2.n + v3.n + v4.n + v5.n) 
from testzzz v1 
cross join 
testzzz v2 
cross join 
testzzz v3 
cross join 
testzzz v4 
cross join 
testzzz v5; 

 

Errori tādi:

Msg 207, Level 16, State 1, Line 8
Invalid column name 'n'.
Msg 207, Level 16, State 1, Line 8
Invalid column name 'n'.
Msg 207, Level 16, State 1, Line 8
Invalid column name 'n'.
Msg 207, Level 16, State 1, Line 8
Invalid column name 'n'.
Msg 207, Level 16, State 1, Line 8
Invalid column name 'n'.

Link to comment
Share on other sites

from testzzz v1

from v v1

 

Ar with klauzu definē apakšpieprasījumu v, no kura pēc tam atlasa.

 

Gints Plivna

http://datubazes.wordpress.com

 

P.S. Ā un vēl protams jautājums kurš SQL Serveris? Ja kaut kāds aizvēsturisks, tad tur CTE (common table expression) nebija.

Edited by Gints Plivna
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...