|
Quote: Len("hello") = Len("hello ")
I was thinking how char vs. varchar are treated in SQL and messed around trying to get the LEN('HELLO ') != LEN('HELLO')
It's like an incorrect passing/appenidng/using VARCHAR(MAXLEN): if it passes through anything not of MAXLEN it's truncated (to 8K or, to 'HELLO').
Lesson learned, although I've not declared an actual char field [ >char(2) ] in years, and even that, only rarely.
Ravings en masse^ |
---|
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein | "If you are searching for perfection in others, then you seek disappointment. If you are seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010 |
|
|
|
|
|
Of those, I use only SQL, and it's worse than that. (Transact-SQL at least.)
Remember that RTRIM and LTRIM remove only SPACEs, not all whitespace.
Basically, LEN (and RTRIM and LTRIM) work on bytes, so it does the same things with VARBINARY as it does with VARCHAR.
So I should not have been surprised when performing LEN on a VARBINARY ignores 0x32 at the end as well.
modified 17-Apr-19 23:47pm.
|
|
|
|
|
Also remember that T-SQL != SQL.
Just saying.
Having been working with SQL server for a couple of years now I have to say that the string handling have a lot more to wish for.
|
|
|
|
|
Well, in SQL:
Len('hello') = Len(' hello') is false (5 = 6).
This is my fave thing to do in a query window for a quick update:
IF (1=2)
BEGIN
BEGIN TRAN UPDATE [SomeTable] SET [someColumn] = 'someNewValue' WHERE [someID] = 0
ROLLBACK
COMMIT
END I still get intellisense within the BEING/END area and, should I accidentally press F5 or run the silly thing w/o selecting the code to run, no harm done.
Yeah, I know, gotta make sure I include the WHERE clause, and also BEGIN TRAN. I then select and run COMMIT.
The best way to improve Windows is run it on a Mac.
The best way to bring a Mac to its knees is to run Windows on it.
~ my brother Jeff
|
|
|
|
|
Officially, I actively choose to not slap myself becuz of a (programming) language's nuance(s).
The best way to improve Windows is run it on a Mac.
The best way to bring a Mac to its knees is to run Windows on it.
~ my brother Jeff
|
|
|
|
|
Re-read the OP. Chris didn't state he was going to slap his own head ....
|
|
|
|
|
Y'all need to re-read my comment.
Never did imply nor explicitly express Chris did or would do that.
The best way to improve Windows is run it on a Mac.
The best way to bring a Mac to its knees is to run Windows on it.
~ my brother Jeff
|
|
|
|
|
English!
fish equals ghoti
Ghoti - Wikipedia[^]
"If we don't change direction, we'll end up where we're going"
|
|
|
|
|
ghoti and chips today, yum!
|
|
|
|
|
You had me at Javascript baby!
|
|
|
|
|
The point of === is that "1" == 1 but "1" !== 1, that is, "1" === 1 will return false, due to the differing types
|
|
|
|
|
|
The reason programming pays well is that you need to learn how the languages work
|
|
|
|
|
This is the kind of crap you get in a weakly typed language.
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013
|
|
|
|
|
I had a colleague who insisted on occasionally writing the (perfectly valid but ummm counter-intuitive) form
index[array] in C. He also worked out some multi-dimensional extensions, which my marginal brain is too small to contain. And yes, he did have a shot at the The International Obfuscated C Code Contest[^]
Cheers,
Peter
Software rusts. Simon Stephenson, ca 1994. So does this signature. me, 2012
|
|
|
|
|
What a legend!
|
|
|
|
|
Yes, I was (long ago) proudly shown char c = i["Some string"]; - perfectly valid if not immediately obvious to the beginner.
|
|
|
|
|
I had never thought about pointer arithmetic being commutative before... seems consistent at least.
int index = 1;
char *address = "String";
index[address] is the same as *(index + address)
address[index] is the same as *(address + index)
- implicitly includes the size of the base data type. (char)
If this was attempted with variables instead of constants, you might end up with memory protection issues. Most OSes would not want you to start a loop by loading memory address 1 into a register.
They would let you load the memory address of "String"
|
|
|
|
|
I remember being frustrated by the fact C# 1.0 had a default container called ArrayList. Is it an Array, or a List? These are very different things. Is it a fancy container that somehow has worked out how to get the benefits of both? The documentation never said.
|
|
|
|
|
Christian Graus wrote: The documentation never said The very reason I never used the stupid thing.
Software Zen: delete this;
|
|
|
|
|
|
I'm sure your first one should be:
"1" == 1 is true
=== specifically takes type into account. Javascript's type co-ercion can be a win or a lose, depending on what you want. If type matters, use === and !==
|
|
|
|
|
That kind of things already existed when our ancestors began to cast logic into silicon[^].
Of course, there also were well designed CPUs[^] that had exactly 256 opcodes, with only 0x68 being reserved as prefix for future expansions of the instruction set. And of course there are the opcodes 0xE0 - 0xEF, the 'Set X Register' instruction for registers 0x0 - 0xF, short SEX. Absolutely no confusion here.
I have lived with several Zen masters - all of them were cats.
His last invention was an evil Lasagna. It didn't kill anyone, and it actually tasted pretty good.
|
|
|
|
|
Chris Maunder wrote: SQL:
Len("hello") = Len("hello ")
That is a fun one that I came across a while ago. for some reason SQL Server ignores the trailing spaces hence they match.
LEN (Transact-SQL) - SQL Server | Microsoft Docs[^]
Every day, thousands of innocent plants are killed by vegetarians.
Help end the violence EAT BACON
|
|
|
|
|
erm, typo?
"1" === 1 is false
"1" == 1 is true (truthy rather)
|
|
|
|