如何获取格式和后缀已知但确切值未知且数据库中可以有多个值的值?
How to get the values for which the format and suffix are known but the exact values are not known and there can be multiple values from the database?
我有一个用例如下:
我在数据库中有数千条记录,假设我有一个名为 myValue 的列。
现在 myValue 的实际值可以是字母数字字符串,其中前两个字符是字母,接下来的 6 个字符是数字,最后一个字符是固定的字母,比如 'x',可能是也可能是不存在于值中。 (例如 'AB123456'、'AB123456x')
所以我知道 myValue 字段值的格式,但不知道所有实际值,因为有很多记录。
现在我想检索所有这样的值,其中存在没有最后一个字符 x 的值(例如,'AB123456')和具有最后一个字符 x 的相同值(例如,'AB123456x') .
那么有什么方法可以检索这些数据吗?
我现在正在对现有数据进行反复试验,但还没有找到成功的方法,而且有数千行这样的行,因此,我们将不胜感激。
您可以这样做:
SELECT myvalue
FROM t
WHERE myvalue LIKE '________'
AND EXISTS (
SELECT 1
FROM t AS x
WHERE x.myvalue = CONCAT(t.myvalue, 'x')
)
一个(最有可能)更快的备选方案是:
SELECT TRIM(TRAILING 'x' FROM myvalue) AS myvalue2
FROM t
GROUP BY myvalue2
HAVING COUNT(DISTINCT myvalue) > 1
我有一个用例如下:
我在数据库中有数千条记录,假设我有一个名为 myValue 的列。
现在 myValue 的实际值可以是字母数字字符串,其中前两个字符是字母,接下来的 6 个字符是数字,最后一个字符是固定的字母,比如 'x',可能是也可能是不存在于值中。 (例如 'AB123456'、'AB123456x')
所以我知道 myValue 字段值的格式,但不知道所有实际值,因为有很多记录。
现在我想检索所有这样的值,其中存在没有最后一个字符 x 的值(例如,'AB123456')和具有最后一个字符 x 的相同值(例如,'AB123456x') .
那么有什么方法可以检索这些数据吗?
我现在正在对现有数据进行反复试验,但还没有找到成功的方法,而且有数千行这样的行,因此,我们将不胜感激。
您可以这样做:
SELECT myvalue
FROM t
WHERE myvalue LIKE '________'
AND EXISTS (
SELECT 1
FROM t AS x
WHERE x.myvalue = CONCAT(t.myvalue, 'x')
)
一个(最有可能)更快的备选方案是:
SELECT TRIM(TRAILING 'x' FROM myvalue) AS myvalue2
FROM t
GROUP BY myvalue2
HAVING COUNT(DISTINCT myvalue) > 1