Nano Hash - криптовалюты, майнинг, программирование

SQL: исправлена ​​ошибка импорта CSV

У меня есть база данных с несколькими столбцами, заполненными различными числовыми полями. Пытаясь заполнить из CSV, я, должно быть, испортил назначение полей с разделителями. Конечным результатом является столбец, содержащий информацию «Это правильно», но также содержащий данные следующего столбца, разделенные запятой.

Таким образом, вместо столбца UPC1, содержащего «958634», он содержит «958634,95877456». Предполагается, что «95877456» находится в столбце UPC2, вместо этого UPC2 имеет значение NULL.

Есть ли способ разделить запятую и отправить данные в UPC2, сохраняя при этом данные UPC1 до запятой?

Спасибо.

30.10.2015

  • Да, двухэтапный процесс. псевдокод... Update table set col2 = right(col1 till the comma) затем `обновить набор таблиц col1 = left(col1 до запятой)`, предполагая, что каждое значение имеет запятую в столбце 1. 30.10.2015

Ответы:


1

Вы можете сделать это с помощью строковых функций. Чтобы запросить значения и проверить логику, попробуйте следующее:

SELECT
  LEFT(UPC1, CHARINDEX(',', UPC1) - 1),
  SUBSTRING(UPC1, CHARINDEX(',', UPC1) + 1, 1000)
FROM myTable;

Если результат тот, который вы хотите, превратите его в обновление:

UPDATE myTable SET
  UPC1 = LEFT(UPC1, CHARINDEX(',', UPC1) - 1),
  UPC2 = SUBSTRING(UPC1, CHARINDEX(',', UPC1) + 1, 1000);

Выражение для UPC1 занимает левую часть UPC1 до одного символа перед запятой.

Выражение для UPC2 берет остаток строки UPC1, начиная с одного символа после запятой.

Третий аргумент SUBSTRING нуждается в пояснении. Это количество символов, которое вы хотите включить после начальной позиции строки (в данном случае это один символ после запятой). Если вы укажете значение, которое длиннее строки, SUBSTRING просто вернется в конец строки. Использование 1000 здесь намного проще, чем вычисление точного количества символов, которое вам нужно, чтобы добраться до конца.

30.10.2015
  • Потрясающий. Есть и другие записи в UPC1, которые все еще верны. (Все, что имеет длину 8 символов или меньше, является правильным) смогу ли я запустить UPDATE myTable where len(UPC1) > 8 SET UPC1 = LEFT(UPC1, CHARINDEX(',', UPC1) - 1), UPC2 = SUBSTRING(UPC1, CHARINDEX(',', UPC1) + 1, 1000); или что-то в этом роде? 31.10.2015
  • Поскольку вы сказали, что длина 8 символов или меньше, было бы лучше проверить запятую в столбце, используя WHERE CHARINDEX(',', UPC1) > 0. Обязательно поместите предложение WHERE последним: то, как вы это сделали, будет синтаксической ошибкой. 31.10.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..