Inhaltsverzeichnis

Codeschnipsel

Hin und Wieder brauche ich mal eine Ablage für Codeschnipsel, welche ich nicht soo oft brauche, als dass ich sie auswendig kenne, mir jedoch einen (vermeintlich) großen Nutzen bringen können.

WARNUNG

Diese Seite ist nur für mich gedacht!
Wenn Ihr sie lest und versteht, ist das ein netter Zufall ;-)

MySQL

  • Rownum:

SET @rownum=0;
SELECT (@rownum:=@rownum+1) AS row_number, domain from domains

  • byte_format:

select bytes, LOG2(bytes), concat_ws(' ',round(bytes/pow(2,floor(log2(bytes)/10)*10),2) , 
case (floor(log2(bytes)/10)) 
  when 1 then 'KiB'
  when 2 then 'MiB'
  when 3 then 'GiB'
  when 4 then 'TiB'
  else 'bytes' end) as formattedSize  

  • byte_format (Function):

CREATE FUNCTION byte_format (bytes BIGINT) RETURNS CHAR(50)
  RETURN LPAD(
  CASE WHEN bytes<1024 
  THEN CONCAT(bytes, ' bytes') 
  ELSE CONCAT_WS(' ',
    ROUND(bytes/POW(2,FLOOR(LOG2(bytes)/10)*10),2) ,   
    CASE (floor(log2(bytes)/10))
      WHEN 1 THEN 'KiB'  
      WHEN 2 THEN 'MiB'  
      WHEN 3 THEN 'GiB'  
      WHEN 4 THEN 'TiB'  
      ELSE 'XXX' 
    END)
  END,15,' ') ; 
Usage: SELECT byte_format(1024)

XPath

Gegeben sei folgende Beispieldatei:

<?xml version="1.0" encoding="UTF-8"?>
<Personen>
	<Person id="1" sex="m">
		<name>Mustermann</name>
		<vorname>Max</vorname>
		<plz>12345</plz>
		<ort>Köln</ort>
	</Person>
	<Person id="2" sex="f">
		<name>Musterfrau</name>
		<vorname>Maria</vorname>
		<plz>67890</plz>
		<ort>Knuffingen</ort>
	</Person>
</Personen>

alle Vornamen //vorname1)
Name der Person mit id = 1 //Person[attribute::id='1']/name
oder //Person[@id='1']/name
Vornamen länger als drei buchstaben //vorname[string-length()>3]
Orte mit PLZ < 50000 /Personen/Person[./plz/text() < '50000']/ort
ID der letzten Person /Personen/Person[count(/Personen/Person)]/attribute::id
oder /Personen/Person[last()]/@id
Ausgabe aller Textknoten //self::text()
Ausgabe aller
Werte (name, vorname …) der ersten Person
/Personen/Person[1]/*
Ausgabe aller
Attribute (id, sex) der ersten Person
/Personen/Person[1]/@*

Links:

1) wenn namespaces (Person xmlns=„http://sv.ag“) ins Spiel kommen und diese unqualifiziert sind, dann kann(!) folgendes klappen: //child::*[name()='vorname']
Driven by DokuWiki Hosted by RootPfad
© 1997-2011 macphil • E-Mail: post <at> macphil.de