이 문서는 이 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"
비고
식에서 열을 사용하는 경우 식은 해당 열에 대한 종속성을 갖습니다. 종속 열의 이름을 바꾸거나 제거해도 예외가 발생하지 않습니다. 이제 깨진 식 열에 액세스할 때 예외가 발생합니다.
필터에 대한 식을 만들 때 문자열을 작은따옴표로 묶습니다.
"LastName = 'Jones'"
열 이름에 영숫자가 아닌 문자가 포함되거나, 숫자로 시작하거나, 다음 예약어 중 하나와 일치(대/소문자를 구분하지 않음)하는 경우 다음 단락에 설명된 대로 특수한 처리가 필요합니다.
And
Between
Child
False
In
Is
Like
Not
Null
Or
Parent
True
열 이름이 이전 조건 중 하나를 충족하는 경우 대괄호 또는 "'"(강조 강조) 따옴표로 묶어야 합니다. 예를 들어 식에 "Column#"이라는 열을 사용하려면 "[Column#]" 또는 "'Column#'"을 작성합니다.
Total * [Column#]
열 이름이 대괄호로 묶인 경우, 그 안에 있는 ']' 및 '\' 문자는 백슬래시("\") 문자를 앞에 추가하여 이스케이프해야 하며, 다른 문자는 이스케이프할 필요가 없습니다. 열 이름이 그레이브 악센트 문자로 묶인 경우 그레이브 악센트 문자를 포함해서는 안 됩니다. 예를 들어 "Column[]\"이라는 열이 작성됩니다.
Total * [Column[\]\\]
또는
합계 * `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
처리됩니다. 가 지원하는 최대값 또는 최소값을 초과하면, 이 숫자는 로 구문 분석됩니다. 다음은 그 예입니다.
- 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
로 그리고 String
에서 강제 변환될 수 있으며, 그 자체로도 가능합니다.
TimeSpan
는 String
로 그리고 String
에서 강제 변환될 수 있으며, 그 자체로도 가능합니다.
LEN
이 함수는 문자열의 길이를 가져옵니다.
LEN(expression)
주장들 | 설명 |
---|---|
expression |
평가할 문자열입니다. |
예: myDataColumn.Expression="Len(ItemName)"
ISNULL
이 함수는 식을 확인하고 확인된 식 또는 대체 값을 반환합니다.
ISNULL(expression, replacementvalue)
주장들 | 설명 |
---|---|
expression |
확인할 표현입니다. |
replacementvalue |
If 식이 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