Как знать, является ли поле числовым в Linq К SQL

ИМХО, столбец HIGH_VALUE имеет тип данных LONG, поэтому его довольно сложно использовать в PL / SQL. Но вам не нужно использовать это в любом случае, есть конструкция ALTER TABLE ... DROP PARTITION FOR (to_date (....)) . Таким образом, вам вообще не нужно иметь дело с созданным именем раздела.

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

blockquote>
ALTER TABLE sales DROP PARTITION FOR(TO_DATE('01-SEP-2007','dd-MON-yyyy'));

PS: похоже, что это расширение SQL было запатентовано Oracle.

9
задан Drew Noakes 27 February 2009 в 09:47
поделиться

6 ответов

Я не знаю, существует ли отображение для интервала. TryParse () в LinqToSQL, но Вы могли, вероятно, сделать это на двух шагах путем выполнения запроса, кастинга к Списку, затем выбора из списка с LinqToObjects.

int i;
var query = context.Table.ToList();
var intQuery = query.Where( t => int.TryParse( t.Column, out i ) );

Вы могли бы хотеть посмотреть на Динамический LINQ, также. Это позволило бы Вам делать что-то как:

var query = context.Table.Where( "IsNumeric(Column)" );

Динамический LINQ РЕДАКТИРОВАНИЯ доступен в Примерах кода VS2008, связанных с из блога Scott Guthrie, который я связал выше.

6
ответ дан 4 December 2019 в 08:17
поделиться

Изучите Int32. TryParse... Это может работать на Вас.

Ian

1
ответ дан 4 December 2019 в 08:17
поделиться

Вы не сможете сделать это с LINQ2SQL, не загружая все записи на клиенте.

Я могу предложить создать представление или табличную функцию с дополнительным вычисляемым столбцом и затем отфильтровать Ваши результаты с этим столбцом. Или выполните регулярный SQL с DataContext. ExecuteQuery.

0
ответ дан 4 December 2019 в 08:17
поделиться

(Отредактированный для удовлетворения потребностям)

Так, учитывая тот факт, что Вы не можете использовать Integer.TryParse, следующее не выполнимо:

int i;
var rowsWithInts = (From r In dc.YourRows Where Integer.TryParse(r.Column, i));
var rowsWithoutInts = (From r In dc.YourRows Where !Integer.TryParse(r.Column, i));

Действительно ли возможно, что Вы создаете хранимую процедуру и связываете ее с DataContext через Область Методов? В этом случае можно сделать в SQL следующее:

-- Rows with integers
SELECT * FROM your_table WHERE ISNUMERIC(varchar_column) = 1
-- Rows without integers
SELECT * FROM your_table WHERE ISNUMERIC(varchar_column) = 0

Это помогает?

-2
ответ дан 4 December 2019 в 08:17
поделиться

Откройте файл DBML (LINQ-to-SQL) в редакторе XML, пройдите до конца файла и вставьте его непосредственно перед узлом '':

<Function Name="ISNUMERIC" IsComposable="true">
    <Parameter Name="Expression" Parameter="Expression" Type="System.String" DbType="NVarChar(4000)" />
    <Return Type="System.Boolean" DbType="BIT NOT NULL"/>
</Function>

Теперь вы можете использовать функцию уже в SQL под названием «ISNUMERIC». Вот как:

var blah = myDataContext.Accounts.Where(account=>
    myDataContext.ISNUMERIC(account.ID) == true);

Вот так :)

Вы также можете найти следующие функции, которые полезно скопировать:

<Function Name="RAND" IsComposable="true">
  <Return Type="System.Double" DbType="Float NOT NULL" />
</Function>
<Function Name="NEWID" IsComposable="true">
  <Return Type="System.Guid" DbType="UniqueIdentifier NOT NULL" />
</Function>
15
ответ дан 4 December 2019 в 08:17
поделиться
<>.Where(x=>"0123456789".IndexOf(x.value.substring(0,1))>-1)
1
ответ дан 4 December 2019 в 08:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: