我试图将一列分为两部分,然后进行比较以在我的列中查找重复的值。
以下是我的列中的数据示例
'ETORHHF000224000023305'
'ETORHHF000002000000623'
'ETORHHF000002000000624'
'ETORHHF000002000000625'
'ETORHHF000002000000626'
'ETORHHF000002000000627'
'ETH0001845254525 '
'ETH0001845264526 '
'ETH0001845274527 '
'ETH0001845284528 '
'ETH0001845304530 '
要在我的数据库中获取所有此ID的查询是
select * from animals
我在网上找到了以下解决方案,但它适用于 Microsoft SQL Server ,但我无法使其适用于 MySQL
SELECT m.name,
LEFT(m.name, CHARINDEX("\", m.name) - 1) AS column1,
RIGHT(m.name, LEN(m.name) - CHARINDEX("\", m.name)) AS column2
FROM MyTable m
答案 0 :(得分:1)
如果您只想在重复输入每个数字时在其右边标记12个数字,则可以尝试以下查询:
SELECT
RIGHT(entry, 12) AS entry,
MIN(entry) AS first,
MAX(entry) AS second
FROM animals
GROUP BY RIGHT(entry, 12)
HAVING COUNT(*) > 1;
如果您还想要完整的重复记录,则可以使用:
SELECT *
FROM animals
WHERE RIGHT(entry, 12) IN (
SELECT RIGHT(entry, 12) AS entry
FROM animals
GROUP BY RIGHT(entry, 12)
HAVING COUNT(*) > 1
);
答案 1 :(得分:1)
Mysql(> = 8)和MariaDB(> = 10)支持一些正则表达式函数。
如果至少使用这些版本,则可以执行以下操作:
select
name,
REGEXP_REPLACE(name, '\\d+\\s*$', '') as letters,
REGEXP_REPLACE(name, '^[a-zA-Z]+', '') as numbers
from animals;
一个example