如何:匹配搜索框中的字符串和正确的案例表数据

发布于 2024-11-24 15:54:53 字数 1097 浏览 1 评论 0原文

我有一个包含以下格式的公司名称的表:Name Name,并且我有一个搜索框,它执行 MySQL 查询以根据搜索字符串返回数据。

假设我的表数据如下所示:

Company
----------
Name Name
Name Name

依此类推,我的查询如下所示:

$sql = "SELECT * 
          FROM scoreboard 
         WHERE codcliente = '".$q."' 
            OR nombre LIKE '%".$q."%'";

现在,当我尝试时,一切正常: nam, Nam, 名称名称 NNAMNAMENAME N。我的问题是为什么它不能与: namename n 一起使用?显然,这可能与表数据中的混合大小写有关,但如果是这样,为什么 nam 有效?

这是 SHOW CREATE TABLE 记分板 结果:

CREATE TABLE `scoreboard` (
  `id` int(11) NOT NULL DEFAULT '0',
  `codcliente` text,
  `nombre` text,
  `ejecutivo` text,
  `banca_as400` text,
  `banca_real` text,
  `ingresos` varchar(20) DEFAULT NULL,
  `ciiu` text,
  `division` text,
  `actividad` text,
  `riesgo_industria` text,
  `riesgo_cliente` text,
  `fecha` date DEFAULT NULL,
  `analista` text,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

I have a table that contains company names in this format: Name Name, and I have a search box that performs a MySQL query to return data based on the search string.

Let's say my table data looks like this:

Company
----------
Name Name
Name Name

And so on and so forth, and my query looks like this:

$sql = "SELECT * 
          FROM scoreboard 
         WHERE codcliente = '".$q."' 
            OR nombre LIKE '%".$q."%'";

Now, everything works fine when I try: nam, Nam, Name, Name N, NAM, NAME, and NAME N. My question is why doesn't it work with: name or name n? Obviously it might have to do with the mixed case in the table data, but if so, why does nam work?

Here's the SHOW CREATE TABLE scoreboard result:

CREATE TABLE `scoreboard` (
  `id` int(11) NOT NULL DEFAULT '0',
  `codcliente` text,
  `nombre` text,
  `ejecutivo` text,
  `banca_as400` text,
  `banca_real` text,
  `ingresos` varchar(20) DEFAULT NULL,
  `ciiu` text,
  `division` text,
  `actividad` text,
  `riesgo_industria` text,
  `riesgo_cliente` text,
  `fecha` date DEFAULT NULL,
  `analista` text,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不知在何时 2024-12-01 15:54:53

为了避免大小写问题,请将它们全部以大写形式进行比较,这样您就不会受到大小写的干扰。

$sql = "SELECT * 
          FROM scoreboard 
         WHERE upper(codcliente) = '".strtoupper($q)."' 
            OR upper(nombre) LIKE '%".strtoupper($q)."%'";

看起来很老套,但仍然可靠。

To avoid case problems, compare them all in uppercase so you won't be disturbed by case.

$sql = "SELECT * 
          FROM scoreboard 
         WHERE upper(codcliente) = '".strtoupper($q)."' 
            OR upper(nombre) LIKE '%".strtoupper($q)."%'";

Seems hacky, but nevertheless reliable.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文