虽然这些解决方案可以处理小样本集,但它们可能无法处理列中所有可能的数据。例如,如果您有如下数据
male, Brown, Blue, Small body build, 1.63
male, Brown, Blue, Small body build, 1.85
male, Brown, Blue, Small body build, 1.75
male, Brown, Blue, Small body build, 11.63
male, Brown, Blue, Small body build, 11.85
male, Brown, Blue, Small body build, 11.75
然后使用 right(col,4) 解决方案提取数据还将返回值为 11.64 和 11.75 的行,因为 right(col,4) 会忽略表示 10 的 1。
right(col,4) 解决方案还忽略了可能的字符串到 int 转换的开销,并且还假设 right(col,4) 始终是 int。
更好的解决方案是在列中找到最后一个“,”,然后获取该列的子字符串并与所需范围进行比较。
一个更好且效率更高的解决方案是将数据分解为单独的列,例如 Sex、HairColour、EyeColour、Build、Height 等。这将允许更好的数据库性能,允许更好的数据提取/查询等