@@ -38,14 +38,19 @@ class QX_SQL_EXPORT SqlString
3838 friend SqlString QxSql::operator " " _sqi(const char16_t * str, size_t size) noexcept ;
3939 friend SqlString QxSql::operator " " _sqs(const char16_t * str, size_t size) noexcept ;
4040 friend SqlString operator !(const SqlString& s);
41- friend SqlString operator &&(const SqlString& lhs, const SqlString& rhs);
42- friend SqlString operator ||(const SqlString& lhs, const SqlString& rhs);
43- friend SqlString operator ==(const SqlString& lhs, const SqlString& rhs);
44- friend SqlString operator !=(const SqlString& lhs, const SqlString& rhs);
45- friend SqlString operator <(const SqlString& lhs, const SqlString& rhs);
46- friend SqlString operator <=(const SqlString& lhs, const SqlString& rhs);
47- friend SqlString operator >(const SqlString& lhs, const SqlString& rhs);
48- friend SqlString operator >=(const SqlString& lhs, const SqlString& rhs);
41+ friend SqlString operator &&(const SqlString& a, const SqlString& b);
42+ friend SqlString operator ||(const SqlString& a, const SqlString& b);
43+ friend SqlString operator ==(const SqlString& a, const SqlString& b);
44+ friend SqlString operator !=(const SqlString& a, const SqlString& b);
45+ friend SqlString operator <(const SqlString& a, const SqlString& b);
46+ friend SqlString operator <=(const SqlString& a, const SqlString& b);
47+ friend SqlString operator >(const SqlString& a, const SqlString& b);
48+ friend SqlString operator >=(const SqlString& a, const SqlString& b);
49+ friend SqlString operator +(const SqlString& a, const SqlString& b);
50+ friend SqlString operator -(const SqlString& a, const SqlString& b);
51+ friend SqlString operator *(const SqlString& a, const SqlString& b);
52+ friend SqlString operator /(const SqlString& a, const SqlString& b);
53+ friend SqlString operator ^=(const SqlString& a, const SqlString& b);
4954 friend SqlString operator ==(const SqlString& a, const SqlQuery& b);
5055 friend SqlString operator !=(const SqlString& a, const SqlQuery& b);
5156 friend SqlString operator <(const SqlString& a, const SqlQuery& b);
@@ -111,6 +116,12 @@ inline SqlString operator<(const SqlString& a, const SqlString& b) { return SqlS
111116inline SqlString operator <=(const SqlString& a, const SqlString& b) { return SqlString (a.mStr + u" <= " _s + b.mStr ); }
112117inline SqlString operator >(const SqlString& a, const SqlString& b) { return SqlString (a.mStr + u" > " _s + b.mStr ); }
113118inline SqlString operator >=(const SqlString& a, const SqlString& b) { return SqlString (a.mStr + u" >= " _s + b.mStr ); }
119+ inline SqlString operator +(const SqlString& a, const SqlString& b) { return SqlString (a.mStr + u" + " _s + b.mStr ); }
120+ inline SqlString operator -(const SqlString& a, const SqlString& b) { return SqlString (a.mStr + u" - " _s + b.mStr ); }
121+ inline SqlString operator *(const SqlString& a, const SqlString& b) { return SqlString (a.mStr + u" * " _s + b.mStr ); }
122+ inline SqlString operator /(const SqlString& a, const SqlString& b) { return SqlString (a.mStr + u" / " _s + b.mStr ); }
123+ // Sub for = since we cannot override operator=() sensibly
124+ inline SqlString operator ^=(const SqlString& a, const SqlString& b) { return SqlString (a.mStr + u" = " _s + b.mStr ); }
114125
115126// Sub-query
116127SqlString operator ==(const SqlString& s, const SqlQuery& q);
@@ -120,6 +131,7 @@ SqlString operator<=(const SqlString& s, const SqlQuery& q);
120131SqlString operator >(const SqlString& s, const SqlQuery& q);
121132SqlString operator >=(const SqlString& s, const SqlQuery& q);
122133
134+ // TODO: To minimize confusion we may want to get rid of these and make them methods, though the user would differ
123135// Special (use of assignment operators for non-assignment here is because many operators are already used in SQL)
124136// Concat (with space): Chosen cause + is taken and separating words with just a space is generally only use for
125137// shorthand aliases and "or equal" kind of matches saying "this is an alias", like "otherwise known as"
0 commit comments