假设我有一个表(tableA),其中有一个名为Kwaliteit的列,它将保存一个int值(0, 1, 2, 3),表示一些字符串值。这些字符串值被序列化存储在另一个表(tableB)中,如下所示:
这将会生成一个PHP数组,类似于这样:
事情是这样的,我想要在
我该如何解决这个问题?我能否使用字符串值临时更改列值以执行过滤操作? 编辑 这里是
序列化后的值存储在
a:4:{i:0;s:4:"Goed";i:1;s:5:"Matig";i:2;s:6:"Slecht";i:3;s:12:"Afgeschreven";}
这将会生成一个PHP数组,类似于这样:
Array
(
[0] => Goed
[1] => Matig
[2] => Slecht
[3] => Afgeschreven
)
事情是这样的,我想要在
Afgeschreven
上进行筛选。所以我将其插入查询的LIKE
部分,但这并不起作用,因为tableA
中存在一个int
而不是string
。我该如何解决这个问题?我能否使用字符串值临时更改列值以执行过滤操作? 编辑 这里是
tableA
(Kist)的结构。CREATE TABLE IF NOT EXISTS `Kist` (
`idKist` int(11) NOT NULL AUTO_INCREMENT,
`idKistType` int(11) NOT NULL,
`Tag1` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`Tag2` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`VisueelNr` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,
`Bouwjaar` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`kwaliteit` tinyint(1) NOT NULL,
`Actief` tinyint(1) NOT NULL,
PRIMARY KEY (`idKist`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=982 ;
INSERT INTO `Kist` (`idKist`, `idKistType`, `Tag1`, `Tag2`, `VisueelNr`, `Bouwjaar`, `kwaliteit`, `Actief`) VALUES
(1, 1, '0086-1700-0000-0000-0000-371E', '0086-1700-0000-0000-0000-3868', '0', '', 3, 0),
(2, 1, '0086-1700-0000-0000-0000-413F', '0086-1700-0000-0000-0000-409A', '0', '', 0, 1);
并且 tableB
(设置)
CREATE TABLE IF NOT EXISTS `Instellingen` (
`idInstellingen` int(11) NOT NULL AUTO_INCREMENT,
`Instelling` varchar(45) COLLATE utf8_unicode_ci NOT NULL,
`Waarde` longtext COLLATE utf8_unicode_ci,
PRIMARY KEY (`idInstellingen`),
UNIQUE KEY `Instelling_UNIQUE` (`Instelling`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=220 ;
INSERT INTO `Instellingen` (`idInstellingen`, `Instelling`, `Waarde`) VALUES
(200, 'kistKwaliteit', 'a:4:{i:0;s:4:"Goed";i:1;s:5:"Matig";i:2;s:6:"Slecht";i:3;s:12:"Afgeschreven";}');
序列化后的值存储在
Waarde
列中。
Afgeschreven
,你应该在没有任何LIKE
子句的情况下过滤Kwaliteit=3
。看到一些样本数据可能有助于澄清你想要找到的内容。 - OldskooltableA
中,我有这些代表存储在tableB
中的字符串
的整数
。我想用一个字符串
在tableA
上进行过滤。 - Mathlight