System.Data.DataColumn.Expression 속성
이 문서에서는 이 API에 대한 참조 설명서에 대한 추가 설명서를 제공합니다.
이 속성의 Expression 한 가지 사용은 계산 열을 만드는 것입니다. 예를 들어 세금 값을 계산하기 위해 단가에 특정 지역의 세율을 곱합니다. 세율은 지역마다 다르기 때문에 단일 세율을 열에 넣는 것은 불가능합니다. 대신 값은 다음 코드와 같이 속성을 사용하여 Expression 계산됩니다.
DataSet1.Tables("Products").Columns("tax").Expression = "UnitPrice * 0.086"
두 번째 사용은 집계 열을 만드는 것입니다. 계산된 값과 마찬가지로 집계는 에 있는 행의 전체 집합을 기반으로 작업을 수행합니다 DataTable. 간단한 예는 집합에 반환된 행 수를 계산하는 것입니다. 다음 코드와 같이 특정 영업 사원이 완료한 트랜잭션 수를 계산하는 데 사용하는 방법입니다.
DataSet1.Tables("Orders").Columns("OrderCount").Expression = "Count(OrderID)"
식 구문
식을 만들 때는 속성을 사용하여 ColumnName 열을 참조합니다. 예를 들어 한 열에 ColumnName 대한 열이 "UnitPrice"이고 다른 "Quantity"인 경우 식은 다음과 같습니다.
"UnitPrice * Quantity"
참고 항목
식에서 열을 사용하는 경우 식은 해당 열에 대한 종속성을 갖습니다. 종속 열의 이름을 바꾸거나 제거하면 예외가 throw되지 않습니다. 이제 중단된 식 열에 액세스할 때 예외가 throw됩니다.
필터에 대한 식을 만들 때 문자열을 작은따옴표로 묶습니다.
"LastName = 'Jones'"
열 이름에 영숫자가 아닌 문자가 포함되거나, 숫자로 시작하거나, 다음 예약어 중 하나와 일치(대/소문자를 구분하지 않음)하는 경우 다음 단락에 설명된 대로 특수한 처리가 필요합니다.
And
Between
Child
False
In
Is
Like
Not
Null
Or
Parent
True
열 이름이 이전 조건 중 하나를 충족하는 경우 대괄호 또는 "'"(강조 강조) 따옴표로 묶어야 합니다. 예를 들어 식에 "Column#"이라는 열을 사용하려면 "[Column#]" 또는 "'Column#'"을 작성합니다.
Total * [Column#]
열 이름이 대괄호로 묶인 경우 백슬래시("\") 문자를 앞에 추가하여 열 이름에 ']' 및 '\' 문자(다른 문자는 아님)를 이스케이프해야 합니다. 열 이름이 그레이브 악센트 문자로 묶인 경우 그레이브 악센트 문자를 포함해서는 안 됩니다. 예를 들어 "Column[]\"이라는 열이 작성됩니다.
Total * [Column[\]\\]
또는
Total * 'Column[]\'
사용자 정의 값
식 내에서 사용자 정의 값을 사용하여 열 값과 비교할 수 있습니다. 문자열 값은 작은따옴표로 묶어야 합니다(문자열 값의 각 작은따옴표 문자 앞에 다른 작은따옴표를 추가하여 이스케이프해야 합니다). 날짜 값은 데이터 공급자에 따라 파운드 기호(#) 또는 작은따옴표(') 내에 묶어야 합니다. 숫자 값에는 10진수 및 과학적 표기법이 허용됩니다. 예시:
"FirstName = 'John'"
"Price <= 50.00"
"Birthdate < #1/31/2006#"
열거형 값을 포함하는 열의 경우 값을 정수 데이터 형식으로 캐스팅합니다. 예시:
"EnumColumn = 5"
리터럴 식 구문 분석
모든 리터럴 식은 고정 문화권 로캘로 표현되어야 합니다. 리터럴 식을 구문 분석하고 변환할 때 DataSet
는 항상 현재 문화권이 아닌 고정 문화권을 사용합니다.
문자열 리터럴은 값을 둘러싼 작은따옴표가 있을 때 식별됩니다. 예들 들어 'John'
입니다.
Boolean
리터럴은 true
식 false
에서 따옴표로 묶지 않습니다.
Integer
리터럴 [+-]? [0-9]+는 System.Int32
, System.Int64
또는 System.Double
. System.Double
는 숫자가 얼마나 큰지에 따라 정밀도를 잃을 수 있습니다. 예를 들어 리터럴의 숫자가 2147483650 DataSet
경우 먼저 숫자를 구 Int32
문 분석하려고 시도합니다. 숫자가 너무 커서 성공하지 못합니다. 이 경우 DataSet
숫자를 성공하는 숫자로 Int64
구문 분석합니다. 리터럴이 Int64 DataSet
의 최대값보다 큰 숫자인 경우 리터럴을 사용하여 Double
구문 분석합니다.
4.42372E-30과 같이 과학적 표기법을 사용하는 실제 리터럴은 다음을 사용하여 System.Double
구문 분석됩니다.
과학적 표기법이 없지만 소수점이 있는 실제 리터럴은 다음과 같이 System.Decimal
처리됩니다. 이 숫자가 지원되는 System.Decimal
최대값 또는 최소값을 초과하면 구문 분석됩니다 System.Double
. 예시:
- 142526.144524는 .
Decimal
- 345262.78036719560925667은 로
Double
처리됩니다.
연산자
부울 AND, OR 및 NOT 연산자를 사용하여 연결이 허용됩니다. 괄호를 사용하여 절을 그룹화하고 우선 순위를 적용할 수 있습니다. AND 연산자는 다른 연산자보다 우선합니다. 예시:
(LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'
비교 식을 만들 때 다음 연산자가 허용됩니다.
- <
- >
- <=
- >=
- =
IN
LIKE
식에서도 다음과 같은 산술 연산자가 지원됩니다.
- + (더하기)
- - (빼기)
- * (곱하기)
- / (나누기)
- % (모듈러스)
문자열 연산자
문자열을 연결하려면 문자를 사용합니다 +
. 클래스의 CaseSensitive 속성 DataSet 값은 문자열 비교가 대/소문자를 구분하는지 여부를 결정합니다. 그러나 클래스의 속성으로 해당 값을 재정의할 CaseSensitive DataTable 수 있습니다.
와일드카드 문자
*
%
두 문자는 모두 LIKE 비교에서 와일드카드 문자에 대해 서로 바꿔 사용할 수 있습니다. LIKE 절의 문자열에 a *
또는 %
이 문자가 포함되어 있으면 해당 문자를 대괄호([]
)로 묶어야 합니다. 대괄호가 절에 있는 경우 각 대괄호 문자는 대괄호(예 [[]
: 대괄호) []]
로 묶어야 합니다. 와일드카드 패턴의 시작과 끝, 패턴의 끝 또는 패턴의 시작 부분에 허용됩니다. 예시:
"ItemName LIKE '*product*'"
"ItemName LIKE '*product'"
"ItemName LIKE 'product*'"
와일드카드 문자는 문자열 중간에 허용되지 않습니다. 예를 들어 'te*xt'
는 사용할 수 없습니다.
부모/자식 관계 참조
열 이름을 Parent
앞에 추가하여 식에서 부모 테이블을 참조할 수 있습니다. 예를 들어 이름이 Parent.Price
Price
부모 테이블의 열을 참조합니다.
자식에 둘 이상의 부모 행이 있는 경우 .Parent(RelationName).ColumnName
예를 들어 관계를 Parent(RelationName).Price
통해 "Price"라는 부모 테이블의 열을 참조합니다.
열 이름을 Child
앞에 추가하여 식에서 자식 테이블의 열을 참조할 수 있습니다. 그러나 자식 관계가 여러 행을 반환할 수 있으므로 집계 함수에 자식 열에 대한 참조를 포함해야 합니다. 예를 들어 자 Sum(Child.Price)
식 테이블에 명명된 Price
열의 합계를 반환합니다.
테이블에 둘 이상의 자식이 있는 경우 구문은 다음과 Child(RelationName)
같습니다. 예를 들어 테이블에 이름이 두 개의 자식 Customers
테이블이 있고 Orders
개체 이름이 DataRelation 지정된 Customers2Orders
경우 참조는 다음과 같습니다.
Avg(Child(Customers2Orders).Quantity)
집계
지원되는 집계 형식은 다음과 같습니다.
Sum
(합계)Avg
(평균)Min
(최소)Max
(최대값)Count
(개수)StDev
(통계 표준 편차)Var
(통계 분산)
집계는 일반적으로 관계를 따라 수행됩니다. 이전에 나열된 함수 중 하나와 부모/자식 관계 참조에 자세히 설명된 자식 테이블 열을 사용하여 집계 식을 만듭니다. 예시:
Avg(Child.Price)
Avg(Child(Orders2Details).Price)
집계는 단일 테이블에서도 수행할 수 있습니다. 예를 들어 "Price"라는 열에 그림의 요약을 만들려면 다음을 수행합니다.
Sum(Price)
참고 항목
단일 테이블을 사용하여 집계를 만드는 경우 그룹별 기능이 없습니다. 대신 모든 행은 열에 동일한 값을 표시합니다.
테이블에 행이 없으면 집계 함수가 반환 null
됩니다.
데이터 형식은 항상 열의 속성을 검사하여 DataType 확인할 수 있습니다. 다음 섹션에 표시된 함수를 Convert
사용하여 데이터 형식을 변환할 수도 있습니다.
집계는 단일 열에만 적용할 수 있으며 집계 내에서 다른 식을 사용할 수 없습니다.
함수
다음 함수도 지원됩니다.
CONVERT
이 함수는 식을 지정된 .NET 형식으로 변환합니다.
Convert(expression, type)
인수 | 설명 |
---|---|
expression |
변환할 식입니다. |
type |
값을 변환할 .NET 형식입니다. |
예: 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 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 할당됩니다.
.NET