SQL Server - 부울 리터럴?
SQL Server에서 리터럴 부울 값을 쓰는 방법사용 예 참조:
select * from SomeTable where PSEUDO_TRUE
다른 샘플:
if PSEUDO_TRUE
begin
select 'Hello, SQL!'
end
주의: 위의 쿼리는 사용 방법과는 무관합니다.이것은 단지 리터럴 부울을 테스트하기 위한 것입니다.
SQL Server에 부울 데이터 형식이 없습니다.@Mikael이 지적한 바와 같이 가장 가까운 근사치는 비트입니다.단, 이것은 수치형이지 부울형이 아닙니다.또한 다음 두 가지 값만 지원합니다.0 ★★★★★★★★★★★★★★★★★」1의 비값, (비값,NULL를 참조해 주세요.
SQL(표준 SQL 및 T-SQL 방언)은 3가지 값 로직을 나타냅니다.SQL의 부울 유형은 다음 3가지 값을 지원해야 합니다.TRUE,FALSE ★★★★★★★★★★★★★★★★★」UNKNOWN(비값))NULL ( ) 。bit★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
SQL Server는 데이터 유형을 지원하지 않으므로 해당 유형의 리터럴을 쓸 수 없습니다.
select * from SomeTable where 1=1
대부분의 데이터베이스는 다음을 허용합니다.
select * from SomeTable where true
그러나 일부 데이터베이스(예: SQL Server, Oracle)에는 부울 유형이 없습니다.이 경우 다음을 사용할 수 있습니다.
select * from SomeTable where 1=1
btw, sql where 구를 손으로 작성하는 경우, 이것은 코드를 단순화하기 위한 기초가 됩니다.where 구에 추가할 조건이 첫 번째 조건인지 아닌지를 알 필요가 없기 때문입니다(앞에 다음 명령어가 필요합니다)."WHERE"또는 후속 명령어(앞에 다음 명령어가 붙어야 함"AND"로합니다."WHERE 1=1"에 추가된 경우)은 앞에 '어느 정도'가 붙습니다."AND".
이것은 다른 어떤 대답에도 언급되어 있지 않습니다.orms가 부울로 함수하는 값을 원하는 경우 사용할 수 있습니다.
CONVERT(비트, 0) -- false CONVERT(비트, 1) -- true
부울이 아닌 비트를 얻을 수 있습니다.예를 들어 다음과 같이 if 문에서는 이 값을 사용할 수 없습니다.
IF CONVERT(bit, 0)
BEGIN
print 'Yay'
END
해석할 수 없습니다.아직 쓸 필요가 있습니다.
IF CONVERT(bit, 0) = 0
그래서 별로 쓸모가 없어요.
Microsoft에 따르면 검색 구문은
[ WHERE <search_condition> ]*
검색 조건은 다음과 같습니다.
<search_condition> ::=
{ [ NOT ] <predicate> | ( <search_condition> ) }
[ { AND | OR } [ NOT ] { <predicate> | ( <search_condition> ) } ]
[ ,...n ]
술어는 다음과 같습니다.
<predicate> ::=
{ expression { = | < > | ! = | > | > = | ! > | < | < = | ! < } expression
보시다시피 비교하기 위해서는 항상 두 개의 표현을 써야 합니다.여기서 검색 조건은 1=1, a!=b와 같은 부울식입니다.
검색 식을 'True' 또는 'False'와 같은 부울 상수와 혼동하지 마십시오.BIT 변수에 부울 상수를 할당할 수 있습니다.
DECLARE @B BIT
SET @B='True'
그러나 TSQL에서는 다음과 같은 부울식 대신 부울 상수를 사용할 수 없습니다.
SELECT * FROM Somewhere WHERE 'True'
그것은 작동하지 않을 것이다.
그러나 부울 상수를 사용하여 다음과 같은 양면 검색 식을 작성할 수 있습니다.
SEARCH * FROM Somewhere WHERE 'True'='True'
SQL Server " true " false " 。 하다 보면 돼요1=1방법(또는 유사)이 필요한 드문 경우입니다.
하나의 옵션은 true와 false에 대해 자체 명명된 변수를 만드는 것입니다.
DECLARE @TRUE bit
DECLARE @FALSE bit
SET @TRUE = 1
SET @FALSE = 0
select * from SomeTable where @TRUE = @TRUE
단, 이러한 정보는 배치 범위 내에서만 존재합니다(사용하는 모든 배치에서 다시 선언해야 합니다).
값은 이렇게 할 수 .'TRUE' ★★★★★★★★★★★★★★★★★」'FALSE'https://learn.microsoft.com/en-us/sql/t-sql/data-types/bit-transact-sql 에서 :
문자열 값 TRUE 및 FALSE는 비트 값으로 변환할 수 있습니다.TRUE는 1로 변환되고 FALSE는 0으로 변환됩니다.
SQL Server の sql sql sql 。
에서 *를서 PEDUO_TRUSomeTable은 *입니다.PEDUO_TRUE
그런 건 없어요.
을 비교하다를 사용해서 을 비교해야 .= < > like ...SQL Server에서 가장 가까운 부울 값은 비트입니다.그리고 그것은 다음 값을 가질 수 있는 정수이다.null,0 ★★★★★★★★★★★★★★★★★」1.
"true value"는 1뿐만 아니라 0을 제외한 모든 값임을 고려해야 합니다.따라서 1=1 대신 1<>0이라고 써야 합니다.
파라미터(@param <> 0)를 사용하는 경우 변환에 문제가 발생할 수 있습니다.
가장 많이 알고 있는 것은 Access입니다.Access는 컨트롤의 True 값을 1이 아닌 -1로 변환합니다.
'참' 또는 '거짓' 문자열을 사용하여 Bolean 유형 데이터를 시뮬레이션할 수 있습니다.
Select *
From <table>
Where <columna> = 'True'
이 방법은 Convert_implicit 함수로 해결되기 때문에 1을 넣는 것보다 느릴 수 있습니다.
TSQL에서 Boolean을 사용하는 것의 가치에 의문을 제기합니다.Booans & For loops를 희망할 때마다 SQL 프로그래머가 아닌 C 프로그래머처럼 문제에 접근하고 있다는 것을 깨달았습니다.기어를 바꾸자 문제가 가벼워졌어요.
SQL에서는 데이터 세트를 조작하고 있습니다."WHERE BOUAL"은 작업 중인 세트를 변경하지 않으므로 효과가 없습니다.filter 구를 활성화하려면 각 행을 다른 행과 비교해야 합니다.Table/Resultset은 iEnumable이고 SELECT 문은 FOREACH 루프입니다.
예, "WHERE IsAdmin = True"가 "WHERE IsAdmin = 1"보다 읽기 좋습니다.
예, TSQL을 동적으로 생성할 경우 "WHERE 1=1, ..."보다 "WHERE True"가 더 적합합니다.
또한 저장된 proc에 부울을 전달하면 if 문이 더 읽기 쉬워질 수 있습니다.
그러나 대부분의 경우 TSQL에 IF, WHILE 및 TEMP 테이블이 많을수록 리팩터링해야 합니다.
나는 이것이 질문의 의도에 답하기를 바란다.SQL Server에는 Boolean이 없지만 Access에서 변환된 Boolean 유형을 가진 데이터베이스가 있는 경우 Access에서 사용할 수 있는 문구는 "..."입니다.WHERE FOO" (Foo는 부울 열 이름입니다)대체는 '..."로 할 수 있습니다.WHERE FOO <>0"...이것이 동작합니다.행운을 빕니다.
select * from SomeTable where null is null
또는
select * from SomeTable where null is not null
이게 최고의 퍼포먼스일까요?
언급URL : https://stackoverflow.com/questions/7170688/sql-server-boolean-literal
'source' 카테고리의 다른 글
| postgresql에서 상위 10개의 값을 얻는 방법 (0) | 2023.04.13 |
|---|---|
| 스타일의 TargetType 속성을 기본 클래스로 설정 (0) | 2023.04.13 |
| 디렉토리를 .gitignore에 추가한 후 원격 저장소에서 제거합니다. (0) | 2023.04.13 |
| Objective-C에서 절대값으로 변환 (0) | 2023.04.13 |
| XAML의 읽기 전용 속성에서 OneWayToSource 바인딩 (0) | 2023.04.13 |