Tom: MySQL >=5.1, 1. Abfrage mit LIKE; 2. Subselect möglich?

Beitrag lesen

Hello,

ich brauche doch nochmal Hilfe für die Abfragen mit MySQL.

Die Testtabelle sieht so aus:

  
CREATE TABLE `postings` (  
	`id` BIGINT(20) NOT NULL AUTO_INCREMENT,  
	`posting` VARBINARY(254) NOT NULL,  
	`subject` VARCHAR(500) NOT NULL,  
	PRIMARY KEY (`id`),  
	UNIQUE INDEX `posting` (`posting`)  
)  
COLLATE='utf8_general_ci'  
ENGINE=MyISAM;  
  

In der Spalte posting steht binär die Tupelgruppe für den Eintrag:

Bsp: 32.2.13 (dez) -> 0020002000D (Hexdarstellung, im Feld 3 Bytes)

Nun habe ich eine Abfragegruppe, die in der Tabelle den letzten Eintrag einer Tupelgruppe finden soll, um den nächsten logischen daraus bestimmen zu können.

Die funktioniert auch soweit, aber ich habe dabei noch Kopfschmerzen:

  
select `posting` from `postings` where id = 7038 into @code;  
set @len = length(@code);  
set @code2 = substring(@code, 1, @len -2);  
select id, hex(max(substring(`posting`, 1, length(@code2) +2 ))) `last`  
		from `postings`  
		where `posting` like concat(@code2,'%');		  
  

Das hex() steht nur zum Angucken drin. Das Ergebnis muss dann noch weiter verarbeitet werden.

Sorgen machen mir zwei Dinge:
Wenn im Datenfeld, und damit in  @code und dann voraussichtlich auch in @code2 bereits ein Byte auf 0x25 = '%' steht, was passiert dann in der LIKE-Klausel?

Ich habe versucht, den Wert mit quote() zu maskieren, aber DAS verursacht dann Fehler, bzw. führt dazu, dass ich gar kein Ergebnis bekomme.

Ich habe also leider im Moment Verständnisprobleme, wie LIKE in Verbindung mit einen Binären Wert funktioniert und wozu quote() überhaupt da ist.

Das zweite Problem:
Ich möchte die Statements gerne zusammenfassen zu einem, wenn das geht. Krieg ich aber nicht hin.

die '-2' in "set @code2 = substring(@code, 1, @len -2)" ist auch noch optional, je nachdem welche Ergebnisart gewünscht wird.

Ich würde mich freuen, wenn Ihr mir auf die Sprünge helfen könntet.

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
 ☻_
/▌
/ \ Nur selber lernen macht schlau
http://bikers-lodge.com