我的数据库中有这样的字符串:
DE-1016-860
DE-1016-1078
DE-1016-1166
我如何ORDER BY order_numbers
SELECT
中的DE-1016-1166
DE-1016-1078
DE-1016-860
这样的元素:
function loadCloudStorageFileToBigQuery(source, datasetId, tableId, schema) {
try{
var tableReference = BigQuery.newTableReference();
tableReference.setProjectId(MY_PROJECT);
tableReference.setDatasetId(datasetId);
tableReference.setTableId(tableId);
var load = BigQuery.newJobConfigurationLoad();
load.setDestinationTable(tableReference);
load.setSourceUris([source]);
load.setSourceFormat('CSV');
load.setSchema(schema);
load.setMaxBadRecords(0);
load.setWriteDisposition('WRITE_TRUNCATE');
var configuration = BigQuery.newJobConfiguration();
configuration.setLoad(load);
var newJob = BigQuery.newJob();
newJob.setConfiguration(configuration);
var job = BigQuery.Jobs.insert(newJob, null, {projectId:MY_PROJECT});
}catch(err){
Logger.log('Table upload error: %s', err);
}
}
感谢您帮助我。
我的解决方案是在这个问题之后!
答案 0 :(得分:0)
这假定您的前缀始终相同,因此将数字设为最后一个字符:
SELECT str
FROM (SELECT 'DE-1016-860' str FROM DUAL
UNION ALL
SELECT 'DE-1016-1078' str FROM DUAL
UNION ALL
SELECT 'DE-1016-1166' str FROM DUAL)
ORDER BY TO_NUMBER (SUBSTR (str, 9, 4)) DESC
希望这有帮助!
答案 1 :(得分:0)
如果您的格式始终为AA - #### - 。 然后你可以尝试使用LEFT(),RIGHT()和SUBSTRING()。
例如:ORDER BY LEFT(order_number,2), SUBSTRING(order_number,4,4) DESC, SUBSTRING(order_number, 9,4) DESC
希望这有帮助!
答案 2 :(得分:0)
找到解决方案:
ORDER BY SUBSTR(order_number FROM 1 FOR 8), CAST(SUBSTR(order_number FROM 8) AS UNSIGNED)
首先,我给它们起始点的值为1,终点值为8:
12345678
DE-1016-
你可以看到八个字符。其次,我从第八个数字进行演员表,它工作正常。它给出了我的数字,按照最高点到最后的最小值排序。