다음을 통해 공유


DataColumn.Expression 속성

행을 필터링하거나 열의 값을 계산하거나 집계 열을 만드는 데 사용되는 식을 가져오거나 설정합니다.

네임스페이스: System.Data
어셈블리: System.Data(system.data.dll)

구문

‘선언
Public Property Expression As String
‘사용 방법
Dim instance As DataColumn
Dim value As String

value = instance.Expression

instance.Expression = value
public string Expression { get; set; }
public:
property String^ Expression {
    String^ get ();
    void set (String^ value);
}
/** @property */
public String get_Expression ()

/** @property */
public void set_Expression (String value)
public function get Expression () : String

public function set Expression (value : String)

속성 값

열의 값을 계산하거나 집계 열을 만드는 식입니다. 식의 반환 형식은 열의 DataType에 의해 결정됩니다.

예외

예외 형식 조건

ArgumentException

AutoIncrement 또는 Unique 속성이 true로 설정되어 있는 경우

FormatException

CONVERT 함수를 사용하는 동안 식은 문자열로 계산되지만 문자열에 형식 매개 변수로 변환될 수 있는 표현이 포함되지 않은 경우

InvalidCastException

CONVERT 함수를 사용하는 동안 요청된 캐스팅을 수행할 수 없는 경우. 가능한 캐스팅에 대한 자세한 내용은 다음 섹션에서 변환 함수를 참조하십시오.

ArgumentOutOfRangeException

SUBSTRING 함수를 사용하는 동안 시작 인수가 범위를 벗어난 경우

- 또는 -

SUBSTRING 함수를 사용하는 동안 길이 인수가 범위를 벗어난 경우

Exception

LEN 또는 TRIM 함수를 사용하는 동안 식이 문자열로 계산되지 않는 경우. 여기에는 Char로 계산되는 식이 포함됩니다.

설명

Expression 속성을 사용하는 경우 중 하나는 계산 열을 만들 때입니다. 예를 들어, 과세 가격을 계산하려면 단가에 특정 지역의 세율을 곱합니다. 세율은 지역에 따라 다르기 때문에 열에 단일 세율을 넣을 수 없으므로 다음 섹션의 Visual Basic 코드에 표시된 것처럼 Expression 속성을 사용하여 값을 계산합니다.

DataSet1.Tables("Products").Columns("tax").Expression = "UnitPrice * 0.086"

또 다른 경우는 집계 열을 만들 때입니다. 계산 값과 마찬가지로 집계도 DataTable의 전체 행 집합을 기반으로 작업을 수행합니다. 간단한 예제에서 집합에 반환된 행 수를 계산합니다. 이 Visual Basic 코드에 표시된 것처럼 특정 판매원이 완료한 트랜잭션 수를 계산할 때 이 메서드를 사용합니다.

 DataSet1.Tables("Orders").Columns("OrderCount").Expression = "Count(OrderID)"

식 구문

식을 만들 때 ColumnName 속성을 사용하여 열을 참조합니다. 예를 들어, 두 열의 ColumnName이 각각 "UnitPrice"와 "Quantity"인 경우 식은 다음과 같습니다.

"UnitPrice * Quantity"

참고

열이 식에 사용될 경우 해당 식은 해당 열에 종속되었다고 합니다. 종속된 열의 이름을 바꾸거나 종속된 열을 제거할 경우에는 예외가 throw되지 않습니다. 예외는 현재 중단된 식의 열에 액세스할 때 throw됩니다.

필터에 대한 식을 만드는 경우 문자열을 작은따옴표로 묶습니다.

"LastName = 'Jones'"

다음 문자들은 특수 문자이며 여기서 설명하는 것처럼 열 이름에 사용할 경우 이스케이프되어야 합니다.

\n(줄 바꿈)

\t(탭)

\r(캐리지 리턴)

~

(

)

#

\

/

=

>

<

+

-

*

%

&

|

^

'

"

[

]

열 이름에 위 문자 중 하나가 있으면 이름을 대괄호로 묶어야 합니다. 예를 들어, 식에 열 이름 "Column#"을 사용하려면 "[Column#]"이라고 쓰면 됩니다.

Total * [Column#]

대괄호는 특수 문자이기 때문에 열 이름에 포함되는 경우 슬래시("\")를 사용하여 이스케이프해야 합니다. 예를 들어, 열 이름이 "Column[]"이면 다음과 같이 씁니다.

Total * [Column[\]]

둘째 대괄호만 이스케이프해야 합니다.

사용자 정의 값

사용자 정의 값은 식에서 열 값과 비교하기 위해 사용될 수 있습니다. 문자열 값은 작은따옴표로 묶어야 합니다. 날짜 값은 파운드 기호(#)로 묶어야 합니다. 10진수 및 지수 표기법으로 숫자 값을 표시할 수 있습니다. 예를 들면 다음과 같습니다.

"FirstName = 'John'"

"Price <= 50.00"

"Birthdate < #1/31/82#"

열거형 값이 포함된 열에서는 값을 정수 데이터 형식으로 캐스팅합니다. 예를 들면 다음과 같습니다.

"EnumColumn = 5"

연산자

Boolean AND, OR 및 NOT 연산자를 사용하여 연결할 수 있습니다. 괄호를 사용하여 절을 묶어서 우선 순위를 적용할 수 있습니다. AND 연산자는 다른 연산자에 우선합니다. 예를 들면 다음과 같습니다.

(LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'

비교식을 만들 때는 다음과 같은 연산자를 사용할 수 있습니다.

<

>

<=

>=

<>

=

IN

LIKE

또한 다음과 같은 산술 연산자가 지원됩니다.

+(더하기)

-(빼기)

*(곱하기)

/(나누기)

%(나머지)

문자열 연산자

문자열을 연결하려면 + 문자를 사용합니다. DataSet 클래스의 CaseSensitive 속성 값은 문자열 비교의 대/소문자 구분 여부를 결정합니다. 그러나 이 값은 DataTable 클래스의 CaseSensitive 속성으로 재정의할 수 있습니다.

와일드카드 문자

*와 %는 모두 LIKE 비교에서 와일드카드 문자로 교대로 사용할 수 있습니다. LIKE 절의 문자열에 * 또는 %가 있으면 이들 문자는 대괄호([])로 이스케이프해야 합니다. 대괄호가 절에 있으면 대괄호 문자를 대괄호로 이스케이프해야 합니다(예: [[] 또는 []]). 와일드카드는 패턴의 시작과 끝 부분, 패턴의 끝 부분 또는 패턴의 시작 부분에 사용할 수 있습니다. 예를 들면 다음과 같습니다.

"ItemName LIKE '*product*'"

"ItemName LIKE '*product'"

"ItemName LIKE 'product*'"

문자열의 중간에는 와일드카드 문자를 사용할 수 없습니다. 예를 들어 'te*xt'는 사용할 수 없습니다.

부모/자식 관계 참조

열 이름 앞에 Parent를 붙여 식에서 부모 테이블을 참조할 수 있습니다. 예를 들어, Parent.Price는 이름이 Price인 부모 테이블의 열을 참조합니다.

열 이름 앞에 Child를 붙여 식에서 자식 테이블에 있는 열을 참조할 수 있습니다. 그러나 자식 관계는 여러 행을 반환할 수 있으므로 자식 열에 대한 참조를 집계 함수에 포함시켜야 합니다. 예를 들어, **Sum(Child.Price)**은 자식 테이블에서 이름이 Price인 열의 합을 반환합니다.

테이블에 여러 자식이 있는 경우 구문은 **Child(RelationName)**입니다. 예를 들어, 테이블에 이름이 CustomersOrders인 자식 테이블과 Customers2Orders라는 DataRelation 개체가 있으면 참조는 다음과 같습니다.

Avg(Child(Customers2Orders).Quantity)

집계

다음과 같은 집계 형식이 지원됩니다.

Sum(합계)

Avg(평균)

Min(최소값)

Max(최대값)

Count(개수)

StDev(통계적 표준 편차)

Var(통계적 분산)

집계는 일반적으로 관계를 따라 수행됩니다. 앞에 나열한 함수 중 하나와 앞의 부모/자식 관계 참조에서 설명한 자식 테이블 열 하나를 사용하여 집계식을 만듭니다. 예를 들면 다음과 같습니다.

Avg(Child.Price)

Avg(Child(Orders2Details).Price)

단일 테이블에서 집계를 수행할 수도 있습니다. 예를 들어, 이름이 "Price"인 열의 수치 집계를 만드는 식은 다음과 같습니다.

Sum(Price)

참고

단일 테이블을 사용하여 집계를 만드는 경우 그룹화 기능이 없는 대신 열의 모든 행에 같은 값이 표시됩니다.

테이블에 행이 없으면 집계 함수는 Null 참조(Visual Basic의 경우 Nothing)을 반환합니다.

데이터 형식은 항상 열의 DataType 속성을 검사하여 결정할 수 있습니다. 다음 섹션에 표시된 Convert 함수를 사용하여 데이터 형식을 변환할 수도 있습니다.

FUNCTIONS

다음과 같은 함수도 지원됩니다.

CONVERT

설명

특정 식을 지정된 .NET Framework 형식으로 변환합니다.

구문

Convert(expression, type)

인수

expression -- 변환할 식입니다.

type -- 값을 변환할 대상 .NET Framework 형식입니다.

예제: myDataColumn.Expression="Convert(total, 'System.Int32')"

다음을 제외한 모든 변환이 유효합니다. Boolean은 자체 변환 및 Byte, SByte, Int16, Int32, Int64, UInt16, UInt32, UInt64, String과의 변환만 가능합니다. Char는 자체 변환 및 Int32, UInt32, String과의 변환만 가능합니다. DateTime은 자체 변환 및 String과의 변환만 가능합니다. TimeSpan은 자체 변환 및 String과의 변환만 가능합니다.

LEN

설명

문자열의 길이를 가져옵니다.

구문

LEN(expression)

인수

expression -- 계산할 문자열입니다.

예제: myDataColumn.Expression="Len(ItemName)"

ISNULL

설명

식을 확인하고 확인된 식이나 대체 값을 반환합니다.

구문

ISNULL(expression, replacementvalue)

인수

expression -- 확인할 식입니다.

replacementvalue -- 식이 Null 참조(Visual Basic의 경우 Nothing)이면 replacementvalue가 반환됩니다.

예제: myDataColumn.Expression="IsNull(price, -1)"

IIF

설명

논리식의 결과에 따라 두 값 중 하나를 가져옵니다.

구문

IIF(expr, truepart, falsepart)

인수

expr -- 계산할 식입니다.

truepart -- 식이 true인 경우에 반환될 값입니다.

falsepart -- 식이 false인 경우에 반환될 값입니다.

예제: myDataColumn.Expression = "IIF(total>1000, 'expensive', 'dear')

TRIM

설명

\r, \n, \t, ' ' 등과 같은 앞뒤에 오는 공백 문자를 모두 제거합니다.

구문

TRIM(expression)

인수

expression -- 트리밍할 식입니다.

SUBSTRING

설명

문자열의 지정된 위치에서 시작하여 지정된 길이의 부분 문자열을 가져옵니다.

구문

SUBSTRING(expression, start, length)

인수

expression -- 부분 문자열의 소스 문자열입니다.

start -- 부분 문자열의 시작 위치를 지정하는 정수입니다.

length -- 부분 문자열의 길이를 지정하는 정수입니다.

예제: myDataColumn.Expression = "SUBSTRING(phone, 7, 8)"

참고

null 값이나 빈 문자열을 할당하여 Expression 속성을 다시 설정할 수 있습니다. 식 열에 기본값을 설정한 경우 Expression 속성을 다시 설정하면 이전에 채워진 모든 행에 기본값이 할당됩니다.

예제

다음 예제에서는 DataTable에 세 열을 만듭니다. 둘째 열과 셋째 열에는 식이 포함됩니다. 둘째 열은 가변 세율을 사용하여 세금을 계산하고 셋째 열은 첫째 열의 값에 계산 결과를 더합니다. 결과 테이블이 DataGrid 컨트롤에 표시됩니다.

Private Sub CalcColumns()
     Dim rate As Single = .0862
     dim table as DataTable = New DataTable 
 
     ' Create the first column.
     Dim priceColumn As DataColumn = New DataColumn
     With priceColumn
         .DataType = System.Type.GetType("System.Decimal")
         .ColumnName = "price"
         .DefaultValue = 50
     End With
     
     ' Create the second, calculated, column.
     Dim taxColumn As DataColumn = New DataColumn
     With taxColumn
         .DataType = System.Type.GetType("System.Decimal")
         .ColumnName = "tax"
         .Expression = "price * 0.0862"
     End With
     
    ' Create third column
     Dim totalColumn As DataColumn = New DataColumn
     With totalColumn
         .DataType = System.Type.GetType("System.Decimal")
         .ColumnName = "total"
         .Expression = "price + tax"
     End With
 
     ' Add columns to DataTable
     With table.Columns
         .Add(priceColumn)
         .Add(taxColumn)
         .Add(totalColumn)
     End With
    
     Dim row As DataRow= table.NewRow
     table.Rows.Add(row)
     Dim view As New DataView
     view.Table = table
     DataGrid1.DataSource = view
 End Sub
private void CalcColumns()
{
    DataTable table = new DataTable ();
 
    // Create the first column.
    DataColumn priceColumn = new DataColumn();
    priceColumn.DataType = System.Type.GetType("System.Decimal");
    priceColumn.ColumnName = "price";
    priceColumn.DefaultValue = 50;
     
    // Create the second, calculated, column.
    DataColumn taxColumn = new DataColumn();
    taxColumn.DataType = System.Type.GetType("System.Decimal");
    taxColumn.ColumnName = "tax";
    taxColumn.Expression = "price * 0.0862";
     
    // Create third column.
    DataColumn totalColumn = new DataColumn();
    totalColumn.DataType = System.Type.GetType("System.Decimal");
    totalColumn.ColumnName = "total";
    totalColumn.Expression = "price + tax";

    // Add columns to DataTable.
    table.Columns.Add(priceColumn);
    table.Columns.Add(taxColumn);
    table.Columns.Add(totalColumn);

    DataRow row = table.NewRow();
    table.Rows.Add(row);
    DataView view = new DataView(table);
    dataGrid1.DataSource = view;
}

플랫폼

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0, 1.0에서 지원

참고 항목

참조

DataColumn 클래스
DataColumn 멤버
System.Data 네임스페이스