Abgesehen von der Umhüllung meines Literals in einer CONVERT-Funktion, gibt es eine Möglichkeit, anzugeben, dass ich z. 12345 als BIGINT und nicht als INT dargestellt? In C# konnte ich 12345L angeben, mir ist jedoch keine entsprechende Funktionalität in T-SQL bekannt.Wie spezifiziert man ein BIGINT-Literal in T-SQL?
Antwort
Sie müssen explizit zu einem Bigint deklarieren oder umwandeln.
Während es prefixes and symbols for some other datatypes (binary, float, money, etc.) gibt, glaube ich nicht, dass es eine Möglichkeit gibt, dies in T-SQL für bigint zu tun, was nicht explizit das Bigint oder Casting deklariert. Umwandlung in es.
In der Tat wird SQL Server zumindest für eine select...into
-Operation einen numerischen (Dezimal) -Datentyp verwenden, sobald Ihre Ganzzahlliterale über das hinausgehen, was in einem int gespeichert werden kann.
select 2000000000 as col into test;
select * from information_schema.columns where table_name = 'test';
-- DATA_TYPE: int
drop table test;
select 3000000000 as col into test;
select * from information_schema.columns where table_name = 'test';
-- DATA_TYPE: numeric
drop table test;
select cast(3000000000 as bigint) as col into test;
select * from information_schema.columns where table_name = 'test';
-- DATA_TYPE: bigint
drop table test;
declare @col bigint = 3000000000;
select @col as col into test;
select * from information_schema.columns where table_name = 'test';
-- DATA_TYPE: bigint
drop table test;
declare @var as bigint
set @var = 12345
können Sie verwenden dezimal oder hex wörtlichen wie:
declare @variable bigint
set @variable = 0x7FFFFFFFFFFFFFFF
select @variable
set @variable = 9223372036854775807
select @variable
Nicht wirklich, das macht eine varbinary: SELECT (0x761CC659 + 0x11E1A300) – Chris
select cast(1 as bigint)
IOW Sie einfach Ihren Wert gegossen. Was wäre der Zweck?
Ich kann an ein Dutzend Anwendungsfälle denken. Aber, hier ist eine einfache: SELECT POWER (256,5) wird fehlschlagen, es sei denn, ich konvertiere explizit (oder CAST für Ihr Beispiel) 256 zu einem bigint wie in SELECT POWER (CONVERT (bigint, 256), 5). – Jason
Ich sehe, T-SQL-Parser ist nicht schlau genug. Eine Möglichkeit wäre: Macht wählen (256.0,5); –
- 1. Wie spezifiziert man ein Zielpaket für ANTLR?
- 2. Wie spezifiziert man ein xmlns für XDocument?
- 3. Wie spezifiziert man einen KONTEXT
- 4. Wie spezifiziert man ein Array oder ein Listenelement mit yaml?
- 5. Wie spezifiziert man ein minimal benötigtes Java-Update in Gradle?
- 6. Wie man ein Repository für eine Abhängigkeit in Maven spezifiziert
- 7. GridSearchCV: Wie man Testset spezifiziert?
- 8. Wie spezifiziert man Abhängigkeiten in einer Bibliothek?
- 9. Wie spezifiziert man Icons in manifest.json?
- 10. Wie spezifiziert man eine "Schwanzscheibe" in Perl?
- 11. Wie spezifiziert man Klassenlänge in ggplot Histogrammen?
- 12. Wie spezifiziert man "install --backup" in bjam
- 13. Wie man ein BLOB in SQL SERVER mit TSQL aktualisiert
- 14. TSQL wie man Unterberechnungen macht
- 15. Wie spezifiziert man ein Ziel für die Animation?
- 16. Wie man ein eindeutiges React $ Element als Flusstyp spezifiziert
- 17. Django - Wie spezifiziert man eine Datenbank für ein Modell?
- 18. Wie spezifiziert man ein Maven-Repository für die maven_aar-Regel?
- 19. Wie verwendet man Schleifen in TSQL?
- 20. Wie spezifiziert man difftool_args für git-difftool?
- 21. OptaPlanner - wie man mehrere Algorithmen spezifiziert
- 22. Wie spezifiziert man eine Schriftart von Javascript?
- 23. Wie spezifiziert man eine bestimmte JAXB-Implementierung?
- 24. Wie spezifiziert man jQueryUI Tab Target Panel?
- 25. Wie spezifiziert man ElasticSearch copy_to order?
- 26. Wie spezifiziert man Flask 0.11.1 CLI Funktionsargumente
- 27. Wie spezifiziert man das Schlüsselpasswort mit javax.net.ssl?
- 28. Wie spezifiziert man den Wert von theano.tensor.ivector?
- 29. Wie man genaueres Muster mit regexp spezifiziert
- 30. Wie spezifiziert man Sorgt für Out-Parameter?
Sie können es tun. Anders als der N'value-Wrapper, den du für Unicode verwenden kannst, bin ich mir ziemlich sicher, dass es für numerische Werte keine Wraps wie diese gibt. – dfundako
@dfundako siehe Wraps für andere Typen wie Float und Geld [hier] (https://msdn.microsoft.com/en-us/library/ms179899.aspx). –
Aus Neugier, in welchem Zusammenhang sind Sie besorgt, dass ein String-Literal als Int interpretiert wird anstatt als Bigint? Wenn Sie versuchen, etwas wie 'where [bigIntColumn] = 123' zu tun, wird das String-Literal 123 implizit in eine Bigint konvertiert und dann der Vergleich durchgeführt. –