我正在尝试将列的所有值移动到新列。但是在将其插入新列之前,我需要删除所有前导零。例如,我的原始列上有'000123'。我需要将我的新列更新为123.我需要将此列更改为100,000行。有没有办法在SQL查询中执行此操作?
select substring(ColumnName, patindex('%[^0]%',ColumnName), 10)
我找到了关于如何删除前导零的代码。但是如何将其插入新列?
答案 0 :(得分:3)
这里有几个选项。您可以在更新期间将文本列转换为数字:
UPDATE yourTable
SET new_col = CAST(ColumnName AS UNSIGNED)
但您也可以从列中的文本编号中明确删除前导零:
UPDATE yourTable
SET new_col = TRIM(LEADING '0' FROM ColumnName)
由于看起来您希望新数据表现为数字,其中前导零是人为的,您可能希望将new_col
列设置为某种数字类型。
答案 1 :(得分:2)
这应该做:
UPDATE tablename SET newColumn = currentColumn*1
只需将newColumn设置为整数,并且不要将其设置为零填充(默认情况下,它已经不是)。
答案 2 :(得分:2)
将值转换为unsigned:
update <table> set new_column = CAST(ColumnName AS UNSIGNED);
答案 3 :(得分:1)
如果您需要移动列(添加新列),请执行
<label for="file_upload" class="custom-file_upload z-depth-1">
<i class="material-icons"></i>
<p class="button-text"> Upload Here</p>
</label>
<input class="file_upload" type="file" accept="image/*" name="user_id" />
如果要使用新值更新现有列,则
INSERT INTO table2
SELECT TRIM(LEADING '0' FROM ColumnName)
FROM table1
WHERE condition;