2016-01-08 3 views
0

У меня есть база данных SQL SERVER, полная номеров деталей, которые являются буквенно-цифровыми, например 19E378. Когда я запрашиваю эти значения с помощью функции sqlQuery() пакета RODBC, R немедленно распознает это значение как Inf. Я предполагаю, что он рассматривает научную нотацию и считает, что 19E378 означает 19 * 10 к 378-й мощности (исправлено).Значения символов представлены как inf

Я пробовал кастинг и преобразовывал значения в SQL-запрос в varchar безрезультатно. Я попробовал as.character() вокруг всего запроса, но просто получил «Inf» в виде строки.

library(RODBC) 
    myConn <- odbcConnect('ServerName') 
sqlQuery(myConn, "SELECT DISTINCT TOP 1 Sku, ProdUrl FROM dbo.GSR_Aux_Source WHERE Sku = '19E378') 

Как я могу получить R для отображения значения в виде строки вместо того, чтобы пытаться интерпретировать его как число?

+0

Эти столбцы входят в качестве факторов? Попробуйте 'options (stringAsFactors = FALSE)'. Этот аргумент также можно использовать в функции 'sqlQuery'. Кроме того, у любого, кто запустил ваш SQL Server, чтобы преобразовать эти столбцы в символ. – giraffehere

+0

Выполняя больше исследований, попробуйте использовать аргумент 'as.is' в функции' sqlQuery'. – giraffehere

+0

Научная нотация '19E378' является представлением числа' 19 * 10^378' (не для 19 до 378-й степени) – jogo

ответ

0

Я нашел обходное решение, выполнив 'A'+Sku as Sku, а затем используя регулярное выражение для удаления A, это заставляет R хранить данные в виде символьной строки перед преобразованием в значение «Inf».

Смежные вопросы