【问题标题】:Formatting String data in an SQL Select Search [duplicate]在 SQL 选择搜索中格式化字符串数据 [重复]
【发布时间】:2020-04-07 14:34:27
【问题描述】:

老实说,我不知道该如何表达。所以我只是解释一下这个问题

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

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


【解决方案1】:

你可能会喜欢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]'

结果:

身份证 |输入 |回复 -: | :---------------------------- | :----------------- 1 |你好,我很高兴! -> |有1个解决方案。

db小提琴here

它基本上使用正则表达式[^ A-Za-z0-9],它匹配包含任何不是字母、数字或空格的字符的字符串。

【讨论】:

    【解决方案2】:

    只需替换空格...

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 2012-01-03
    • 2013-12-10
    • 1970-01-01
    • 2012-07-19
    • 2015-12-23
    • 1970-01-01
    相关资源
    最近更新 更多