Получение нескольких записей из xml столбца со значением () в SQL Server

Сошлитесь на Систему. Сеть dll в Вашей модели и Системе использования. Сеть. Кэширование. Кэш

    public string[] GetNames()
    {
      string[] names = Cache["names"] as string[];
      if(names == null) //not in cache
      {
        names = DB.GetNames();
        Cache["names"] = names;
      }
      return names;
    }

Немного упрощенный, но я предполагаю, что это работало бы. Это не MVC конкретный, и я всегда использовал этот метод для кэширования данных.

8
задан Graeme 8 September 2009 в 10:40
поделиться

2 ответа

Спасибо, Эд, но я нашел более простую версию:

SELECT T.C.value('.', 'varchar(100)') as activity
FROM @myDoc.nodes('(/Root/Activities/Activity)') as T(C)

Хотя из вашего "излишне сложного" примера это кажется пугающе простым ..

17
ответ дан 5 December 2019 в 09:26
поделиться

Это работает, но кажется излишне сложным. Может быть более простой способ.

 DECLARE @myDoc xml
    SET @myDoc = 
    '<Root>
        <Activities>
            <Activity>This is activity one</Activity>
            <Activity>This is activity two</Activity>
            <Activity>This is activity three</Activity>
        </Activities>
    </Root>'

SELECT activity.VALUE('(//Activity)[1]','varchar(100)') AS activity
FROM (
        SELECT NewTable.activity.query('.') AS activity
        FROM (SELECT 1 AS col1) AS t
        CROSS APPLY @myDoc.nodes('(/Root/Activities/Activity)') AS NewTable(activity)
     ) AS x
2
ответ дан 5 December 2019 в 09:26
поделиться
Другие вопросы по тегам:

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