Quote:
|
Originally Posted by gtk
Any way of using "REPLACE or TRIM" combined with "REGEXP" '^(The |DER |La )' ?
|
Unfortunately, MySQL regular expression don't provide that kind of power at the moment.
However, if you put your prefixes in a table:
Code:
CREATE TABLE prefixes (
prefix CHAR(10) NOT NULL PRIMARY KEY,
plength TINYINT NOT NULL DEFAULT 0,
KEY (plength)
);
INSERT INTO prefixes (prefix) VALUES
('De'), ('The'), ('Der'), ('La'), ('Le');
UPDATE prefixes SET plength = LENGTH(prefix);
you could use something like this:
Code:
UPDATE titles AS t
SET t.title = CONCAT(
SUBSTRING(
t.title,
2 + (
SELECT p.plength
FROM prefixes AS p
WHERE LOCATE(p.prefix, t.title) = 1
ORDER BY p.plength DESC
LIMIT 1
)
),
' (',
(
SELECT p.prefix
FROM prefixes AS p
WHERE LOCATE(p.prefix, t.title) = 1
ORDER BY p.plength DESC
LIMIT 1
),
')'
)
WHERE
EXISTS (
SELECT *
FROM prefixes AS p
WHERE LOCATE(CONCAT(p.prefix, ' '), t.title) = 1
);
--
felix