在SQL Select搜索中格式化字符串数据

问题描述 投票:0回答:2

老实说,我不确定该如何表达。所以我只是要解释这个问题

为了找到尽可能多的匹配项,我目前运行一段代码,将数据转换为大写字母,删除空格和无效字符。例如:

Hi there, I'm very happy! -> HITHEREIMVERYHAPPY

我的数据库已达到无法运行ResultSet中检查每一行的代码段的大小,因此我想知道在SQL中是否可以通过某种方式实现?

SELECT * FROM Data WHERE Input.replaceAll("[^a-zA-Z0-9]", "").replace(" ", "").toUpperCase() = INPUT AND Response.replaceAll("[^a-zA-Z0-9]", "").replace(" ", "").toUpperCase() = RESPONSE

mysql sql select resultset format-string
2个回答
0
投票

只需替换空格...

https://www.w3schools.com/sql/func_sqlserver_replace.asp

SELECT * FROM TABLE WHERE REPLACE(TABLE.COLUMN,'','')= VALUE;


0
投票

您可能会喜欢RLIKE

-- Sample data
create table Data
(
  Id int primary key auto_increment,
  Input varchar(100),
  Response varchar(100)
);
insert into Data (Input, Response) values
  ('Hi there, I''m very happy! ->', 'To have 1 solution.')
, ('HITHEREIMVERYHAPPY', 'ToHave1Solution')
, ('I rlike this', 'IRLikeThis')

查询:

SELECT *
FROM Data
WHERE Input RLIKE '[^ A-Za-z0-9]'
  AND Response RLIKE '[^ A-Za-z0-9]'

结果:

ID |输入|响应-:| :--------------------------- | :------------------1 |嗨,我很高兴! -> |有1个解决方案。

db <>小提琴here

© www.soinside.com 2019 - 2024. All rights reserved.