Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何处理卧室数量的不一致数据值?_Mysql_Casting_Database Schema - Fatal编程技术网

Mysql 如何处理卧室数量的不一致数据值?

Mysql 如何处理卧室数量的不一致数据值?,mysql,casting,database-schema,Mysql,Casting,Database Schema,我正在创建一个API并处理一个遗留数据库,该数据库的number\u bedrooms值不一致。在7000个单元中,有43个单元具有非整数/数字值 有效整数的范围基本上是1-7。有些具有“2+Loft”或“2+Loft”或“Studio”或“5+”等值 由于这是一个遗留数据库,我无法真正改变它(许多应用程序正在使用它,并且可能使用“2+Loft”硬编码sql查询)),因此我正在考虑创建一个新的int\u bedrooms列 比如: UPDATE table SET int_bedrooms =

我正在创建一个API并处理一个遗留数据库,该数据库的
number\u bedrooms
值不一致。在7000个单元中,有43个单元具有非整数/数字值

有效整数的范围基本上是1-7。有些具有“2+Loft”或“2+Loft”或“Studio”或“5+”等值

由于这是一个遗留数据库,我无法真正改变它(许多应用程序正在使用它,并且可能使用“2+Loft”硬编码sql查询)),因此我正在考虑创建一个新的
int\u bedrooms

比如:

UPDATE table 
SET int_bedrooms = number_bedrooms 
WHERE
number_bedrooms IS NOT NULL and number_bedrooms > 0
这是最可行的方法吗?我还可以使用哪个函数(转换、转换)来可靠地转换:

'5+' into '5'
'2 + Loft' into '2'
'2 + Den' into '2'

这不是一个答案,我也不会假装是,但你为什么不自己手动处理43条记录呢?不管怎样,你都必须在事后测试/审查它们…@jdu-我正在考虑,但目前这些都在应用程序中使用,有些应用程序可能有硬编码的sql查询,例如,“2+阁楼中的卧室数”等。我不想“中断”“什么都可以。但为什么需要将此数据转换为INT?答案取决于你的答案,因为如果你不打算拥有那些“5+”,等等。。。再也不能用INT创建新字段,并将其中43条记录的值设置为5、2等。。。但是,如果您认为将来可能会出现相同的值,那么为什么需要删除这些值呢?您的第一个“更新”语句将更改这些值。。您的意思是要构建一个SQL语句,在SELECT过程中使用函数吗?“与其更改值并将其放在新列中?@Alex-我想强制执行一个数字,以便将来输入,但这可能不会得到批准。”。很可能不会。因此,您认为不值得创建一个新列,而只对当前列进行
CONVERT
ing?这与
CONVERT(字段,无符号整数)
有什么区别?CONVERT主要是关于CONVERT()的。CONVERT()提供了一种在不同字符集之间转换数据的方法。我刚刚重读了手册,在您的例子中,这两个语句是相同的。
UPDATE table 
SET int_bedrooms = CAST(number_bedrooms AS UNSIGNED) ;